Если у меня есть общее табличное выражение для семьи с матерью и отцом, как я могу увеличить счетчик «Поколение»? В семье должен быть ребенок нулевого поколения, родители - поколение 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