Тебе нужен ключ, никак не обойтись.Таблицы SQL не упорядочены, поэтому необходимо ввести поле упорядочения.Похоже, вы обрабатываете текстовые файлы ... если вам нужно добавить целое число, чтобы вы могли упорядочить свои записи.
Затем вы можете использовать комбинацию функции coalesce (возвращает первое ненулевое значение) иФункции задержки, такие как:
;with cte as (
select
ID
,coalesce(
f1
,lag(f1, 1) over (order by id)
,lag(f1, 2) over (order by id)
) f1
,coalesce(
f2
,lag(f2, 1) over (order by id)
,lag(f2, 2) over (order by id)
) f2
,f3
,f4
,f5
from (
values
(1, 'a1', 'b1', null, null, null)
,(2, null, null, 'x1', 'y1', 'z1')
,(3, null, null, 'l1', 'm1', 'n1')
,(4, 'a2', 'b2', null, null, null)
,(5, null, null, 'x2', 'y2', 'z2')
,(6, null, null, 'l2', 'm2', 'n2')
) t(ID, f1, f2, f3, f4, f5)
)
select *
from cte
where f3 is not null
Это вернет таблицу данных, такую как:
2 a1 b1 x1 y1 z1
3 a1 b1 l1 m1 n1
5 a2 b2 x2 y2 z2
6 a2 b2 l2 m2 n2