我有下表类层次结构。
ClassID ParentID
--------------------
PMM_00001 null
PMM_00010 PMM_00001
PMM_00110 PMM_00010
PMM_00020 PMM_00001
PMM_00220 PMM_00020
我想得到以下结果。
ClassID Class_Join
---------------------
PMM_00001 PMM_00001
PMM_00010 PMM_00001
PMM_00010 PMM_00010
PMM_00110 PMM_00001
PMM_00110 PMM_00010
PMM_00110 PMM_00110
PMM_00020 PMM_00001
PMM_00020 PMM_00020
PMM_00220 PMM_00001
PMM_00220 PMM_00020
PMM_00220 PMM_00220
我计划使用这些结果通过加入我的特征表来获得继承的特征。过去我使用循环来正确设置数据,但我想使用 CTE 来获得这些结果。
这是我到目前为止所尝试的。
;WITH ClassHierarchy_CTE (ClassID, ClassID_Join)
AS
(
SELECT
c.ClassID,
c.ClassID
FROM
ClassHierarchy AS h
WHERE
h.ParentID IS NULL
UNION ALL
SELECT
c.ClassID,
h.ParentID
FROM
ClassHierarchy AS h INNER JOIN ClassHierarchy_CTE
ON
h.ParentID = ClassHierarchy_CTE.ClassID
)
SELECT
*
FROM
ClassHierarchy_CTE
ORDER BY
ClassID
我从中得到的结果只是沿着层次结构向下走以获得完整列表。我需要将引用返回到层次结构中的每个级别,以便获得完整的特征列表。任何帮助表示赞赏!如果有更好的方法可以做到这一点,我愿意接受建议。