首页 > 解决方案 > ORDER BY ASC with NULL last 和随后的排序不起作用

问题描述

我有一个包含 3ORDER BY列的查询:第二列ORDER BY必须具有NULL最后排序的值;第三个ORDER BY似乎不起作用。

下面的第一个表是我的查询产生的 - 它根据NULL需要对最后一个表进行排序,但第三个顺序不正确(第 3 行和第 4 行被倒置)。

第 3 行的StatusOK应该在第 4 行的Status之后LATE,因为LATE它是序数 before OK

SELECT * FROM t
ORDER BY ORG, IIF(Earliest_Date IS NULL, 1, 0), Status;
ORG    Earliest_Date   Status
A        1/1/2019      LATE
A        2/2/2019       OK
A          NULL         OK
A          NULL        LATE
B        3/1/2019      LATE
B          NULL         OK

NULLs这是有序的最后和第三顺序与LATEbefore升序的预期结果OK

Desired:
ORG    Earliest_Date   Status
A        1/1/2019      LATE
A        2/2/2019       OK
A          NULL        LATE
A          NULL         OK
B        3/1/2019      LATE
B          NULL         OK

任何帮助是极大的赞赏。

标签: sqlms-accesssql-order-by

解决方案


我没有访问权限,因此我无法自己进行测试,但听起来您需要做的就是ASC在您的第三级ORDER BY标准之后指定,如下所示:

SELECT * 
FROM t
ORDER BY ORG, IIF(Earliest_Date IS NULL, 1, 0), Status ASC;

推荐阅读