表具有可为空的ContactDate字段。我想对这些记录进行排序,以便非空值首先按升序排列,然后在非可空值之后对空值进行排序。
Select * from myTable Order by ContactDate ASC
返回以下
NULL
NULL
NULL
NULL
2015-07-27 10:00:00.000
2015-07-29 10:00:00.000
然后,
Select * from myTable Order by ContactDate DESC
返回以下
2015-07-29 10:00:00.000
2015-07-27 10:00:00.000
NULL
NULL
NULL
NULL
但我需要这样:
2015-07-27 10:00:00.000 -- asc
2015-07-29 10:00:00.000 -- asc
NULL
NULL
NULL
NULL
使用MS SQL Server 2012
答案 0 :(得分:5)
在case
中使用order by
语句。
<强>查询强>
select * from myTable
order by case when ContactDate is null then 1
else 0 end,ContactDate;
答案 1 :(得分:0)
您可以使用ISNULL()
将NULL值转换为9999-12-31,然后order by
ContactDate:
SELECT * FROM myTable
ORDER BY ISNULL(CONVERT(VARCHAR, ContactDate), '9999-12-31') ASC