我想按两个日期排序,startdate和enddate,任何一个都可以为空。
- 我想先按开始日期订购,然后按结束日期订购。
- 如果结束日期为空,我根本不想按此订购。
- 所有结束日期为空的开始日期都在所有结束日期的开始日期之前。
- 如果开始日期为空,我希望这些条目位于列表的最后。(空开始日期将具有与之关联的空结束日期。)
我想按两个日期排序,startdate和enddate,任何一个都可以为空。
这个 ORDER BY 子句应该这样做:
ORDER BY
CASE WHEN startdate IS NULL THEN 1 ELSE 0 END,
startdate,
CASE WHEN enddate IS NULL THEN 0 ELSE 1 END,
enddate
根据您的 DBMS,可能有更简单的方法来执行此操作,但不一定是可移植的。
如果您的数据库是 Oracle,那么您可以编写:
SELECT startdate, enddate
FROM yourtable
ORDER by startdate NULLS LAST, enddate NULLS FIRST;