我有一份报告,其中有两栏告知员工及其经理(下表)。
员工 | 经理 |
---|---|
A | B |
B | C |
C | F |
F | R |
R | 我 |
G | B |
H | B |
我 | 我 |
我最终想要的是一个管理链——它将显示报告链。期望的最终结果如下表:
|员工|经理_1 |经理_2 |经理_3 |经理_4 |经理_5| |A |B |C |F |R |I | |B |C |F |R |I |I | |C |F |R |I |I |I | |F |R |I |I |I |I | |R |我 |我 |我 |我 |我 | |G |B |C |F |R |I | |H |B |C |F |R |I |
如何得到这个结果? 我一直在思考 CTE 递归。但说实话并没有得到想要的 结果。
我没有尚未运行的sql。 这是关于 sql db 的。
非常感谢任何帮助! 克里斯.
我不确定递归变体,因为你没有指出你的RDBMS,但你的任务最简单的方法可以是这样的:
select e.Employee
, e.Manager as Manager_1
, e2.Manager as Manager_2
, e3.Manager as Manager_3
, e4.Manager as Manager_4
, e5.Manager as Manager_5
from Employees e
inner join Employees e2 on e2.Employee = e.Manager
inner join Employees e3 on e3.Employee = e2.Manager
inner join Employees e4 on e4.Employee = e3.Manager
inner join Employees e5 on e5.Employee = e4.Manager;
您可以在此示例中使用数据:https://dbfiddle.uk/vY9LDeDn