0

データベース内の各ルートの所有権階層を出力するクエリを作成しています。現在、次のデータ出力を達成できるという点で成功している再帰的 CTE を使用しています。

rootID RootName RelatedName
1   ABA GPS
1   ABA PIG
1   ABA BBY
1   ABA PIG
2   PIG DDS
2   PIG GPS

私が達成しようとしているのは、データが次のように見えるグループ ID 列です。

GroupID rootID  RootName RelatedName
100    1    ABA GPS
100    1    ABA PIG
100    1    ABA BBY
100    1    ABA PIG
100    2    PIG DDS
100    2    PIG GPS

グループ 200、300 などについても同様です。木ごとに。上記の結果を達成するために、再帰 CTE のどの部分にコードを挿入できますか?

;WITH cte_Rel AS (
SELECT
<columns>
FROM #RawRel r 
WHERE 1 = 1
AND <initial Conditions>
UNION ALL 
SELECT
<Columns>
FROM #RawRel r
JOIN cte_Rel c ON r.RootName = c.RelatedName
) 
SELECT DISTINCT * FROM cte_Rel
OPTION (MAXRECURSION 100)
4

1 に答える 1