我要求计算亲子关系。
QuestionID ParentQuestionID
207 NULL
208 NULL
209 207
210 208
211 209
212 210
例如,问题ID 207具有子ID 209& 209有子id 211.所以207总共有两个孩子ID。所以我想把数量作为2.我怎么能这样做。有人可以帮忙吗?
答案 0 :(得分:2)
试试这个:
;with cte as
(
select QuestionID, ParentQuestionID, 0 as lvl
from questiontable
where QuestionID = 207
union all
select q.QuestionID, q.ParentQuestionID, lvl+1
from questiontable q
inner join cte c on c.QuestionID= q.ParentQuestionID
)
select count(*) from cte
where QuestionID <> 207
您可以使用参数代替硬编码值207,使其对任何QuestionID
都是动态的。