【发布时间】:2019-09-19 06:21:08
【问题描述】:
我有一张这样的桌子
ID Name Parent Code
----------------------------------
1 Item1 NULL K123
2 Item2 NULL K324
3 Item3 1 NULL
4 Item4 2 NULL
5 Item5 3 NULL
6 Item6 5 NULL
7 Item7 4 NULL
8 Item8 NULL K567
9 Item9 8 NULL
10 Item10 NULL NULL
---------------------------------
我需要像这样从其父级继承代码给所有子级
ID Name Parent Code
----------------------------------
1 Item1 NULL K123
2 Item2 NULL K324
3 Item3 1 K123
4 Item4 2 K324
5 Item5 3 K123
6 Item6 5 K123
7 Item7 4 K324
8 Item8 NULL K567
9 Item9 8 K567
10 Item10 NULL NULL
---------------------------------
我尝试了下面的 CTE
;with CTE(ID,Name,Parent,Code,[Level]) as
(
select ID,Name,Parent,Code,0 as [Level] from tbl_mytable
union all
select T.ID,T.Name,T.Parent,T.Code,C.[Level]+1 from tbl_mytable T
inner join CTE C on C.Parent=T.ID
)
select * from CTE C
这并不能帮助我实现我正在尝试的目标。我只是 CTE 的初学者,我认为它无法解决。
【问题讨论】:
标签: sql sql-server-2012 common-table-expression