SQL Server 2005 で再帰的な CTE クエリを作成しようとしていますが、奇妙な結果が得られます。私のテーブルは次のとおりです。
PairID ChildID ParentID
900 1 2
901 2 3
902 3 4
これは私のCTEクエリです:
WITH TESTER (PairID,
ChildID,
ParentID,
Level)
AS (SELECT a.PairID, a.ChildID,a.ParentID, 0 AS Level
FROM BusinessHierarchy AS a
UNION ALL
SELECT b.PairID, b.ChildID, b.ParentID, oh.Level + 1 AS Level
FROM BusinessHierarchy AS b INNER JOIN
TESTER AS oh ON b.ChildID = oh.ParentID)
SELECT
x.PairID,
x.ChildID,
x.ParentID,
x.Level
FROM TESTER AS x
ORDER BY x.Level, x.ChildID, x.ParentID
わかりましたので、データセットが返されましたが、次のように繰り返しが含まれているため、期待どおりではありません。
PairID ChildID ParentID Level
900 1 2 0
901 2 3 0
902 3 4 0
...
900 2 3 1
901 3 4 1
...
900 3 4 2
なぜこれが起こっているのか、どうすれば修正できるのかを誰かが説明してくれたら、とても感謝しています.
私の最後の質問に関する限り、次のように各親で最初の childID を表示するには、どのように変更する必要がありますか?
Original
PairID ChildID ParentID Level
900 1 2 0
901 2 3 1
902 3 4 2
I want it displayed as:
PairID ChildID ParentID Level
900 1 2 0
901 1 3 1
902 1 4 2