我有以下的表格类层次结构。
我计划使用这些结果来加入我的特征表,从而得到继承特征。过去我使用循环来正确设置数据,但我想使用CTE来获得这些结果。
以下是我目前尝试过的方法。
ClassID ParentID
--------------------
PMM_00001 null
PMM_00010 PMM_00001
PMM_00110 PMM_00010
PMM_00020 PMM_00001
PMM_00220 PMM_00020
and I want to get the following results.
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
我从这个简单的遍历结构中得到的结果只是下一级的列表。我需要获得每个层次结构的引用,以便可以获取完整的特征列表。如果有任何帮助,将不胜感激!如果有更好的方法,请给予建议。