Iは、次の階層のテーブルを持っている:このheirarchicalテーブルをフラットテーブルに非正規化する最も簡単で簡単な方法は何ですか?
Table Category:
CategoryId, ParentCategoryId, CategoryName
1, null, SomeRoot
2, 1, SomeChild
3, 2, SomeGrandchild
4, 3, SomeGreatGrandchild
(このサンプルデータはレベル4より前のノード上の葉を含まないが、それが可能であることに注意)。データが関連する場合、データはレベル4より深くなることはありません。私は変換したい/このピボットは、固定4レベル私が使用するレベルを検出するための巨大なcase文をカテゴリテーブルに4回参加外側左、そして建てやった
CatId, Name1, Name2, Name3, Name4
1, SomeRoot, null, null, null
2, SomeRoot, SomeChild, null, null
3, SomeRoot, SomeChild, SomeGrandchild, null
4, SomeRoot, SomeChild, SomeGrandchild, SomeGreatGrandchild
表示IDフィールドが、それはnullの行が含まれていません....任意のアイデア?助けて!
データのレベルが常に
jcollum
@jcollum Updated Q:関連性がある場合、データはレベル4より深くなることはありません。 – TheSoftwareJedi
再帰レベルが不明な場合は、CTEを使用します。知られているレベルと小さいレベルの再帰については、CTEにオーバーヘッドが多く、サブクエリが優れていると聞きました。 – jcollum