SQL递归查询有关Hirachical名称



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;>小提琴。

最新更新