ORDER BY ASC с NULL, последний и последующий заказ не работает - PullRequest
0 голосов
/ 10 июня 2019

У меня есть запрос, который имеет 3 ORDER BY столбцов: второй ORDER BY должен иметь NULL значений, упорядоченных последними;третий ORDER BY, похоже, не работает.

Первая таблица, приведенная ниже, - это то, что генерирует мой запрос - он упорядочивает последний NULL по желанию, но третичный порядок неверен (строки 3 и 4 инвертированы).

Статус OK в строке 3 должен быть после Статус LATE в строке 4, поскольку 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

Любая помощь очень ценится.

Ответы [ 2 ]

0 голосов
/ 10 июня 2019

Код должен быть в порядке, возможно, другая проблема, попробуйте код ниже, чтобы сначала проверить его:

SELECT * FROM t
ORDER BY ORG, Status, IIF(Earliest_Date IS NULL, 1, 0)
0 голосов
/ 10 июня 2019

У меня нет доступа, поэтому я сам не могу проверить это, но, похоже, все, что вам нужно, это указать ASC после вашего высшего ORDER BY критерия, подобного этому:

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