私はリレーショナルテーブル(id、parentId、name)を持っています
フラット化された次元テーブルに変換したい
(id、レベル1、レベル2、レベル3、レベル4)
深さを 4 に固定しても問題ありません。
再帰的な CTE とピボットを使用して進歩しましたが、結果セットが正しくありません
私は得る
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
私は何を間違っていますか?