Страницы

Поиск по вопросам

вторник, 26 февраля 2019 г.

Группировка в MS SQL строк с полями где NULL

Как то можно сгруппировать это:
F1 F2 F3 -------------------------- 1 null null null 2 null null null 3 4 null null null 5 null null null 6
В это:
F1 F2 F3 ---------------- 1 2 3 4 5 6


Ответ

Если у вас всего чётко по три, то примерно так.
Данные:
declare @data table (row_num int, F1 int, F2 int, F3 int);
insert into @data values (1, 1, null, null) ,(2, null, 2, null) ,(3, null, null, 3) ,(4, 4, null, null) ,(5, null, 5, null) ,(6, null, null, 6) ;
Запрос:
;with data as ( select rn = row_num - 1, * from @data ) select F1 = max(F1), F2 = max(F2), F3 = max(F3) from data group by rn / 3;
Результат:
F1 F2 F3 ----------- ----------- ----------- 1 2 3 4 5 6
Порядок строк всё-же нужно определить - либо явно (как в примере), либо косвенно (с помощью функции row_number() over (order by ...)), иначе нет гарантии, что строки сгруппируются как надо.

Комментариев нет:

Отправить комментарий