Как сделать нулевые значения последними при сортировке с несколькими столбцами в SQL?

-1
задан marc_s 17 January 2019 в 16:00
поделиться

2 ответа

DECLARE @sorttest TABLE ( test1 INT, test2 INT)

INSERT INTO @sorttest values
(1,2),(5,4),(4,3),(NULL,1),(3,null),(2,5)

DECLARE @temp1 TABLE ( ID1 INT IDENTITY(1,1) PRIMARY KEY, test3 INT )
DECLARE @temp2 TABLE ( ID2 INT IDENTITY(1,1) PRIMARY KEY, test4 INT )

INSERT INTO @temp1
SELECT test1 FROM @sorttest ORDER BY test1 DESC

INSERT INTO @temp2
SELECT test2 FROM @sorttest ORDER BY test2 DESC

SELECT test3, test4 FROM @temp1 t1
LEFT JOIN @temp2 t2 ON t1.ID1 = t2.ID2

Я манипулировал данными, используя 2 другие временные таблицы, чтобы получить желаемый результат, используя оператор соединения.

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

ВЫХОД:

test3   test4
5       5
4       4
3       3
2       2
1       1
NULL    NULL
0
ответ дан kristech 17 January 2019 в 16:00
поделиться

вы можете сделать это

SELECT * FROM #sorttest ORDER BY
CASE WHEN test IS NULL and test2 is null THEN 2 ELSE 
   case when test is null or test2 is null then 1 end 
   END ,test desc

, но тогда порядок ненулевого столбца будет немного странным

0
ответ дан Cato 17 January 2019 в 16:00
поделиться
Другие вопросы по тегам:

Похожие вопросы: