Как то можно сгруппировать это:
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 ...)), иначе нет гарантии, что строки сгруппируются как надо.
Комментариев нет:
Отправить комментарий