cod*_*bot 2 sql postgresql sql-order-by
即使“日期”是int,它也代表 yyyy mm dd 日期。我正在尝试SELECT按日期写一个订单,当它是 BC=true 时它是desc,所以日期将按正确的顺序 -500 01 02 然后 -500 01 03 (yyyy mm dd)
以及什么时候是 BC=false是asc,所以日期将再次按正确顺序排列 1500 01 02,然后是 150 01 03 (yyyy mm dd)
我想出了这个SELECT * FROM test ORDER BY bc=true desc, bc=false asc;在 BC 日期上效果很好的方法,但它会翻转 AD 日期(15000103 然后是 15000102,这是错误的)。
我知道有date可用的类型,但我希望它可以作为 BC 确切日期的 hack。
如何SELECT根据 BC 布尔列更改日期以正确排序?
谢谢
我认为bc=true desc, bc=false asc效果不佳。等我有了电脑,我会再检查一下,稍后更新我的答案。
也许我的解决方案只是一个伎俩或作弊。这不是合法的方式。你可以试试这个。
SELECT * FROM test
ORDER BY bc DESC, CASE WHEN bc THEN date*(-1) ELSE date END ASC;
Run Code Online (Sandbox Code Playgroud)
或者
SELECT * FROM test
ORDER BY bc DESC, CASE WHEN bc THEN abs(date) ELSE date END ASC;
Run Code Online (Sandbox Code Playgroud)
希望我的回答能让你满意。