Ответ 1
Один из способов - отсортировать его следующим образом:
ORDER BY
(CASE WHEN Foo IS NULL THEN 1 ELSE 0 END), Foo
Или: сначала сортируйте по нулевому значению, затем сортируйте по содержимому Foo.
У меня есть следующий тестовый код:
CREATE TABLE #Foo (Foo int)
INSERT INTO #Foo SELECT 4
INSERT INTO #Foo SELECT NULL
INSERT INTO #Foo SELECT 2
INSERT INTO #Foo SELECT 5
INSERT INTO #Foo SELECT 1
SELECT * FROM #Foo
ORDER BY
CASE WHEN Foo IS NULL THEN Foo DESC ELSE Foo END
DROP TABLE #Foo
Я пытаюсь создать следующий вывод:
1 2 3 4 5 NULL
"Если null, то положите его последним"
Как это делается с использованием Sql 2005
/М
Один из способов - отсортировать его следующим образом:
ORDER BY
(CASE WHEN Foo IS NULL THEN 1 ELSE 0 END), Foo
Или: сначала сортируйте по нулевому значению, затем сортируйте по содержимому Foo.
Вы также можете сделать
SELECT * FROM #Foo ORDER BY COALESCE(Foo, 2147483647)
который заменит NULL на максимально возможный int для целей сортировки (так что оставив только сохраненные значения) и таким образом шунтирует его в обратном порядке любого порядка.