2011-11-14 30 views
0

如何编写选择查询以按时间顺序列出所有行,并在最后出现未标记的记录?选择查询以按时间顺序列出所有行?

Create Table Demo(Col1 VARCHAR(10), Col2 SMALLDATETIME NULL) 

    Insert into Demo Values('TG', '2009-03-08') 
    Insert into Demo Values('YG', NULL) 

回答

0

如果您使用的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 
1

使用ISNULL()提供该会在您的订购所有其他之后的空值大的值。

例如

SELECT * 
FROM Demo 
ORDER BY ISNULL(Col2, '2079-1-1')