我有一个员工表
ID | 姓名 | 经理 |
---|---|---|
1个 | 苏珊 | 无效的 |
2个 | 约翰 | 1个 |
3个 | 玛丽 | 1个 |
4个 | 乔什 | 3个 |
5个 | 马修 | 4个 |
6个 | 狮子座 | 2个 |
7 | 彼得 | 5个 |
我想要这样的输出:
ID | 姓名 | 等级制度 |
---|---|---|
1个 | 苏珊 | 无效的 |
2个 | 约翰 | 苏珊->约翰 |
3个 | 玛丽 | 苏珊->玛丽 |
4个 | 乔什 | 苏珊->玛丽->乔希 |
5个 | 马修 | 苏珊->玛丽->乔希->马修 |
6个 | 狮子座 | 苏珊->约翰->利奥 |
7 | 彼得 | 苏珊->玛丽->乔希->马修->彼得 |
动态链接库:
create table employees(id int,name varchar(10), manager int);
insert into employees
values(1,'susan',null)
,(2,'john',1)
,(3,'mary',1)
,(4,'josh',3)
,(5,'mathew',4)
,(6,'leo',2)
,(7,'peter',5)
您可以为此使用递归 CTE。
当您有超过 100 次迭代时,您的示例没有,您需要提供一个选项:
OPTION(MAXRECURSION 0)