我有以下格式的数据。我想以分层方式检索这些数据而不使用CTE或循环,只需编写T-SQL语句即可。我怎么能这样做?
ParentId ChildId
1 2
1 3
1 4
2 5
2 6
3 7
5 8
8 9
答案 0 :(得分:0)
如果你真的不能使用CTE,你需要多次加入表格,比如@DavidG评论,如下所示:
select *
from Table1 T1
left outer join Table1 T2 on T1.ChildId = T2.ParentId
left outer join Table1 T3 on T2.ChildId = T3.ParentId
left outer join Table1 T4 on T3.ChildId = T4.ParentId
left outer join Table1 T5 on T4.ChildId = T5.ParentId
where
not exists (select 1 from Table1 t where t.ChildId = T1.ParentId)
将返回以下内容:
ParentId ChildId ParentId ChildId ParentId ChildId ParentId ChildId ParentId ChildId
1 2 2 5 5 8 8 9 NULL NULL
1 2 2 6 NULL NULL NULL NULL NULL NULL
1 3 3 7 NULL NULL NULL NULL NULL NULL
1 4 NULL NULL NULL NULL NULL NULL NULL NULL