我有一张这样的表:
declare @departments table
(
depa_key int,
depa_key1 int
)
insert into @departments(depa_key, depa_key1)
select 1,2
union all
select 2,4
union all
select 4,5
因此,填写一些数据后,表格如下所示:
depa_key depa_key1
1 2
2 4
4 5
5 NULL
DEPA_KEY1始终是来自`DEPA_KEY。
的父级我想做的是为给定的depa_key
获得完整的层次结构(所有depa_key1)。
实施例: 对于depa_key = 1,结果应为:
depa_key
2
4
5
但我不知道该怎么做?
答案 0 :(得分:5)
您可以使用递归CTE:
;with cte as (
select depa_key1 from @departments where depa_key = 1
union all
select d.depa_key1 from cte c join @departments d on c.depa_key1 = d.depa_key
)
select * from cte;