MS SQL的新手。具有如下的桌子,
ID Name Parent ID
1 AA 0
2 BB 1
3 CC 2
4 DD 3
5 EE 3
6 FF 4
7 FG 6
8 AD 1
9 AC 2
我的预期结果显示在分层名称
中ID Name Parent ID Hirarchical Name
1 AA 0 AA
2 BB 1 AA.BB
3 CC 2 AA.BB.CC
4 DD 3 AA.BB.CC.DD
5 EE 3 AA.BB.CC.EE
6 FF 4 AA.BB.CC.DD.FF
7 FG 6 AA.BB.CC.DD.FF.FG
8 AD 1 AA.AD
9 AC 2 AA.BB.AC
感谢您提前的帮助。
递归CTE有点棘手。这做您想要的:
with cte as (
select id, name, convert(varchar(max), name) as hier, 1 as lev
from t
where parentid = 0
union all
select t.id, t.name, cte.hier + '.' + t.name, lev + 1
from cte join
t
on t.parentid = cte.id
where lev < 10
)
select *
from cte;
这是一个db&lt;>小提琴。