如何编写一个选择查询以按时间顺序列出所有行,并且最后出现未注明日期的记录?
Create Table Demo(Col1 VARCHAR(10), Col2 SMALLDATETIME NULL)
Insert into Demo Values('TG', '2009-03-08')
Insert into Demo Values('YG', NULL)
答案 0 :(得分:1)
使用ISNULL()
为您的订单中所有其他值之后的空值提供一个较大的值。
e.g。
SELECT *
FROM Demo
ORDER BY ISNULL(Col2, '2079-1-1')
答案 1 :(得分:0)
如果在CASE
中使用ORDER BY
(并且您的RDBMS支持它),则可以强制Col2
的非空值通过为它们分配较低的值来排序值(0)比NULL(1)。 ORDER BY
的第二列原样是Col2
,因此非空日期将按升序排序。
SELECT
Col1,
Col2
FROM Demo
ORDER BY
CASE WHEN Col2 IS NOT NULL THEN 0 ELSE 1 END,
Col2 ASC