Я читал книгу SQL, один из вопросов:
Напишите запрос к таблице Sales.Customers, которая возвращает для каждого клиента идентификатор клиента и регион.Сортировка строк в выходных данных по регионам с сортировкой меток NULL в последнюю очередь (после значений, отличных от NULL). Обратите внимание, что поведение сортировки по умолчанию для меток NULL в T-SQL заключается в сортировке первой (перед значениями, отличными от NULL).
И ответ таков:
SELECT custid, region
FROM Sales.Customers
ORDER BY
CASE WHEN region IS NULL THEN 1 ELSE 0 END, region;
Я могу понять идею, но все еще в замешательстве, давайте возьмем записьс custid = 9 , например: поскольку custid 9 имеет нулевую область, в случае cstatement возвращает 1, поэтому запрос выглядит так:
ORDER BY 1, region
, что эквивалентно:
ORDER BY custid, region --because custid is the first column
так почему же Custid 9 не предшествует Custid 10 (вторая запись в выводе)?разве этот вывод не нужно сначала упорядочить по custid, поэтому 9 - до 10?