【发布时间】:2019-06-10 18:59:14
【问题描述】:
我有一个包含 3 个 ORDER BY 列的查询:第二个 ORDER BY 必须具有最后排序的 NULL 值;第三个ORDER BY 似乎不起作用。
下面的第一个表是我的查询生成的 - 它根据需要对NULL 进行最后排序,但第三级顺序不正确(第 3 行和第 4 行倒置)。
第 3 行上的状态 OK 应该是 after 第 4 行上的状态 LATE,因为LATE 在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 排在最后,第三级升序,LATE 在 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
非常感谢任何帮助。
【问题讨论】:
-
除了 IFF => IF 错字,此代码工作正常。 paiza.io/projects/9jiiYIszWRw5jqRnyxfyaQ?locale=ja-jp
-
上面的链接转到指定
MySQL的编辑器,OP正在询问ms-access -
您的查询是正确的并给出了您想要的结果,所以问题出在其他地方。是否存在
'OK'开头包含空格的情况?试试这个:SELECT * FROM t ORDER BY ORG, IIF(Earliest_Date IS NULL, 1, 0), trim(Status); -
@forpas...我已经检查过...状态始终包含“OK”或“LATE”,因为它是我设置的值。我已经验证没有前导/尾随空格。因此我尝试的修剪不起作用。
-
@Swaroop...我一定遗漏了一些东西...我的 IIF 有效,而且语法正确...不是“IFF”...
标签: sql ms-access sql-order-by