我的问题与此类似:How to display a table order by code (like 01, 02… then null columns)?,但对于SQL Server。
简而言之,我有一个SELECT语句,它返回以下内容:
ColumnA ColumnB
X NULL
Y 1
Z 2
..由ColumnB完成排序。
我们如何强制(columnB = NULL)类型的行到底部?即,预期的结果是:
ColumnA ColumnB
Y 1
Z 2
X NULL
谢谢SOF社区。
答案 0 :(得分:23)
...或者为了避免价值冲突......
SELECT
ColumnA,
ColumnB
FROM YourTable
ORDER BY
CASE WHEN ColumnB IS NULL THEN 1 ELSE 0 END ASC,
ColumnB
答案 1 :(得分:2)
您也可以使用isnull:
select * from thetable order by isnull(columnb, 99999)
isnull将使用您提供给它的值替换null,因此在这种情况下,如果该列为null,则将其替换为99999.您可以将该值设置为某个大数字,因此它将位于底部订单。
答案 2 :(得分:0)
,T.MONTHS_TO_AUTOGROWTH
,the_closest_event=ROW_NUMBER() OVER (PARTITION BY SERVERID, DRIVE ORDER BY
CASE WHEN MONTHS_TO_AUTOGROWTH > 0 THEN MONTHS_TO_AUTOGROWTH ELSE 9999
END )
结果按MONTHS_TO_AUTOGROWTH排序,但零结束