3
我擁有下表的Class Hierarchy結構。使用SQL Server CTE返回所有父記錄
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
我從這裏得到的結果只是走下層次結構以獲得完整列表。我需要將參考返回到層次結構中的每個級別,以便我可以獲得完整的特徵列表。任何幫助表示讚賞!如果有更好的方法來做到這一點,我願意接受建議。