我正在构建一个查询,为我的数据库中的每个根输出所有权层次结构。我正在成功使用递归 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)