我有以下要求,
输入
CID ParentID
1 10
2 1
3 1
4 2
5 2
6 2
7 2
8 4
9 4
10 NULL
20 25
30 38
15 51
17 71
当我传递子值时,4以下是我想要的输出:
期望的输出:
CID ParentID
2 4
1 2
10 1
NULL 10
4 2
4 8
2 4
2 5
2 6
1 3
2 7
请帮忙!提前谢谢。
答案 0 :(得分:0)
您的说明和数据不符。我认为结果中的行(4,2)应该是(4,9)。如果我是对的,那么这应该做你想要的:
with Parents(lvl, CID, ParentID) as (
select 0, ParentID, CID
from T
where CID = 4
union all
select lvl+1, T.ParentID, T.CID
from T join Parents
on T.CID = Parents.CID
)
select CID, ParentID
from Parents
union all
select T.ParentID, T.CID
from T join Parents
on Parents.ParentID = T.ParentID;
SQL小提琴here。