SQL排序升序但空值降序

ili*_*ica 1 sql-server sorting sql-server-2012

表具有可为空的ContactDate字段.我想对这些记录进行排序,以便非空值首先按升序排列,然后在非可空值之后对空值进行排序.

Select * from myTable Order by ContactDate ASC
Run Code Online (Sandbox Code Playgroud)

返回以下

NULL
NULL
NULL
NULL
2015-07-27 10:00:00.000
2015-07-29 10:00:00.000
Run Code Online (Sandbox Code Playgroud)

然后,

Select * from myTable Order by ContactDate DESC
Run Code Online (Sandbox Code Playgroud)

返回以下

2015-07-29 10:00:00.000
2015-07-27 10:00:00.000
NULL
NULL
NULL
NULL
Run Code Online (Sandbox Code Playgroud)

但我需要这样:

2015-07-27 10:00:00.000 -- asc
2015-07-29 10:00:00.000 -- asc
NULL
NULL
NULL
NULL
Run Code Online (Sandbox Code Playgroud)

使用MS SQL Server 2012

Ull*_*las 5

使用case声明order by.

询问

select * from myTable
order by case when ContactDate is null then 1
else 0 end,ContactDate;
Run Code Online (Sandbox Code Playgroud)

小提琴演示