我需要获取所有直接或间接依赖某人的员工姓名。使用此示例中的查询(来自https://rextester.com/WGVRGJ67798),
我可以得到这个结果:
create table employee(
id int not null,
employee varchar(10) not null,
boss int null
)
insert into employee values
(1,'Anna',null),
(2,'Bob',1),
(3,'Louis',1),
(4,'Sara',2),
(5,'Sophie',2),
(6,'John',4);
with boss as (
select id, employee, boss, cast(null as varchar(10)) as name
from employee
where boss is null
union all
select e.id, e.employee, b.id, b.employee
from employee e
join boss b on b.id = e.boss
)
select * from boss
我可以得到这个结果:
然而,我需要看到这个:
这就像展示一个人和所有“在他或她下面”的员工之间的所有可能关系。
T-SQL 分层查询
,你会发现需要使用递归的 CTE 来实现。 - Panagiotis Kanavos