0
如何编写选择查询以按时间顺序列出所有行,并在最后出现未标记的记录?选择查询以按时间顺序列出所有行?
Create Table Demo(Col1 VARCHAR(10), Col2 SMALLDATETIME NULL)
Insert into Demo Values('TG', '2009-03-08')
Insert into Demo Values('YG', NULL)
如何编写选择查询以按时间顺序列出所有行,并在最后出现未标记的记录?选择查询以按时间顺序列出所有行?
Create Table Demo(Col1 VARCHAR(10), Col2 SMALLDATETIME NULL)
Insert into Demo Values('TG', '2009-03-08')
Insert into Demo Values('YG', NULL)
如果您使用的ORDER BY
一个CASE
(和你的RDBMS支持的话),你可以强制非空值Col2
比的NULL赋予它们一个较低的值(0)排序提前空值( 1)。 ORDER BY
的第二列原样是Col2
,所以非空日期将按升序排序。
SELECT
Col1,
Col2
FROM Demo
ORDER BY
CASE WHEN Col2 IS NOT NULL THEN 0 ELSE 1 END,
Col2 ASC
使用ISNULL()
提供该会在您的订购所有其他之后的空值大的值。
例如
SELECT *
FROM Demo
ORDER BY ISNULL(Col2, '2079-1-1')