母と父を持つ家族に共通のテーブル式がある場合、「世代」カウンターをインクリメントするにはどうすればよいですか? 家族は、子供を世代 0、親を世代 1、4 人の祖父母を世代 2 として持つ必要があります。ただし、ループは祖父母のセットごとに 1 回ずつ、2 回実行されます。
;WITH FamilyTree
AS
(
SELECT *, 0 AS Generation
FROM myTable
WHERE [id] = 99
UNION ALL
SELECT name, Generation + 1
FROM myTable AS Fam
INNER JOIN FamilyTree
ON Fam.[id] = FamilyTree.[motherid]
UNION ALL
SELECT name, Generation + 1
FROM myTable AS Fam
INNER JOIN FamilyTree
ON Fam.[id] = FamilyTree.[fatherid]
)
SELECT generation, name FROM FamilyTree