选择查询按时间顺序列出所有行?

时间:2011-11-14 03:10:35

标签: sql

如何编写一个选择查询以按时间顺序列出所有行,并且最后出现未注明日期的记录?

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

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

2 个答案:

答案 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