3
부모 자식 관계를 반환하는 CTE가 있습니다. PanelID를 사용하여 where 절을 선택하면 하위 패널의 모든 부모를 가져옵니다. 그러나 깊이는 반대입니다. 나는 2로 자식 패널의 부서가 필요 상단 부모로 0SQL 상위 부모 행에 상대적인 하위 행 깊이 찾기
WITH category_cte AS
(SELECT PanelID AS SourceID, PanelID, BP_DP, 0 AS depth FROM dbo.tblPanels
UNION ALL
SELECT CTE.SourceID, C.PanelID, C.BP_DP, CTE.depth + 1 AS depth
FROM dbo.tblPanels AS C INNER JOIN
category_cte AS CTE ON C.SCID = CTE.PanelID)
SELECT SourceID, PanelID, BP_DP, depth
FROM category_cte AS category_cte_1 where PanelID = x
반환 확실한 해결책은 하위 쿼리에서 쿼리를 포장하고 계산 ROW_NUMBER
을 사용하는 것입니다
SourceID PanelID BP_DP depth
1240 1240 1 0
1446 1240 1 1
1434 1240 1 2
반환되는 내용이 아닙니까? 계산 된 깊이로 반복적으로 CTE를 사용하면 최상위 노드가 0이고 후속 노드가> 0입니다. 따라서 조부모 - 부모 - 자식이있는 경우 0-1-2이됩니다. – BlackjacketMack
반환 값은 자식에 대해 0을 제공합니다. 나는 그 반대를 찾고 있었다. – user1781272