根据布尔列升序或降序

2023-12-30

This is the table structure in PostgreSQL 10.
enter image description here

尽管“日期”是一个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;这在公元前日期上效果很好,但它翻转了公元日期(15000103 然后 15000102,这是错误的)。

我知道有date类型可用,但我希望它能作为精确 BC 日期的破解。

我怎样才能改变我的SELECT根据 BC 布尔列正确排序日期?

Thanks


我不认为bc=true desc, bc=false asc运转良好。当我拥有计算机时,我会再次检查并稍后更新我的答案。

也许我的解决方案只是一个技巧或欺骗。这不是合法的方式。你可以试试这个。

SELECT * FROM test 
ORDER BY bc DESC, CASE WHEN bc THEN date*(-1) ELSE date END ASC;

Or

SELECT * FROM test 
ORDER BY bc DESC, CASE WHEN bc THEN abs(date) ELSE date END ASC;

希望我的回答能让您满意。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

根据布尔列升序或降序 的相关文章

随机推荐