SQL Query用于获取Parent-Child数据关系的计数

时间:2014-07-31 09:12:23

标签: sql-server-2008-r2

我要求计算亲子关系。

  QuestionID    ParentQuestionID
    207         NULL
    208         NULL
    209         207
    210         208
    211         209
    212         210

例如,问题ID 207具有子ID 209& 209有子id 211.所以207总共有两个孩子ID。所以我想把数量作为2.我怎么能这样做。有人可以帮忙吗?

1 个答案:

答案 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都是动态的。

Demo