我有一个执行 select 语句的存储过程。我希望我的结果按日期字段排序,并首先显示具有 NULL 日期的所有记录,然后显示最近的日期。
该语句如下所示:
SELECT a,b,c,[Submission Date]
FROM someView
ORDER BY [Submission Date] ASC
现在,这将首先显示所有提交日期为 NULL 的记录,但是当我到达其中包含日期值的行时,它们不是 View 中的最新日期。
如果我用 DESC 替换 ASC,那么我会按照我想要的顺序获得日期,但 NULL 值位于结果集的底部。
有什么方法可以构建我的查询,以便我可以在顶部显示空值,然后当存在日期值时,将它们按从最近到最旧的降序排列?
最佳答案
@Chris,你几乎已经拥有它了。
ORDER BY (CASE WHEN [Submission Date] IS NULL THEN 1 ELSE 0 END) DESC,
[Submission Date] DESC
[编辑:#Eppz 要求我调整上面的代码,如当前所示]
我个人更喜欢这个,而不是创建“魔数(Magic Number)”。魔数(Magic Number)几乎总是一个等待发生的问题。
关于sql-server - ORDER BY DATE 首先显示 NULL,然后显示最近的日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/821798/