У меня есть реляционная таблица (id, parentId, name)
, который я хотел бы преобразовать в сплюснутую таблицу размеров
(id, Уровень1, Уровень2, Уровень3, Уровень4)
Я исправляю глубину на глубине 4.
Я сделал успехи с рекурсивным CTE и pivot, но набор результатов не верен
Я получаю
Id Name Level1 Level2
0 Root NULL NULL
1 NULL L1 NULL
но мне нужно
Id Name Level1 Level2
0 Root NULL NULL
1 Root L1 NULL
вот что у меня на сегодняшний день
with rcte as
(
select h.id
,h.parent_id
,h.name
,1 as HierarchyLevel
FROM RelTable h
where id = 1
union all
select h2.id
, h2.parent_id
, h2.name
, r.HierarchyLevel + 1 AS HierarchyLevel
FROM RelTable h2
inner join rcte r on h2.parent_id = r.id
)
select id, parent_id, [1] as L1,[2] as L2,[3] as L3, [4] as L4
from (
select id,parent_id,name,HierarchyLevel from rcte
) as src
pivot ( max(name) for HierarchyLevel in ([1],[2],[3],[4]) ) as pvt
что я делаю не так?