sql-server - ORDER BY DATE 首先显示 NULL,然后显示最近的日期

标签 sql-server sql-server-2000

我有一个执行 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/

相关文章:

SQL Server 不能在本地字符串变量中存储超过 4000 个字符

sql - 无法再次绑定(bind)多部分标识符

sql - 除了 SQL Server 中的 SQL 语句未返回预期结果

SQL查询结果需要返回WHERE子句中的所有记录,甚至重复

mysql - 使用结果选择查询(来自 Info_schema 的选择的列)

sql - 如何在sql server中使用命名空间获取XML节点值?

sql - 如何在T-SQL中根据列的内容输出 bool 值?

c# - 如何在不使用 Entity Framework 获取值本身的情况下获取 blob 大小

sql-server - SQL Server 2000 : Ideas for performing concatenation aggregation subquery

sql-server - 获取链接服务器中插入行标识的最佳方法?