我有一个结构如下的表:
Employee_ID Employee_Name Manager_ID
而且,对于每个员工,我都需要出示最高管理者的 ID。我的意思是,例如,如果我有 EmployeeID 2,其经理为 3,因此,数字 3 的经理为 5,我必须显示:
Empoyee_ID--Top_Manager
2 5
我需要使用 Postgres 中的递归 CTE 来完成此操作。
像(对于 2 级经理):
WITH RECURSIVE T AS
(
SELECT EMPLOYEE_ID, EMPLOYEE_NAME, MANAGER_ID, 1 AS MANAGER_LEVEL
FROM MyTable
UNION ALL
SELECT T.EMPLOYEE_ID, T.EMPLOYEE_NAME, E.MANAGER_ID, MANAGER_LEVEL + 1
FROM MyTable AS E
JOIN T ON T.MANAGER_ID = E.EMPLOYEE_ID
WHERE T.MANAGER_LEVEL = 1 --> limiting to level 2 - 1
)
SELECT EMPLOYEE_ID, EMPLOYEE_NAME, MANAGER_ID
FROM T
WHERE MANAGER_LEVEL = 2 --> retrieving only level 2, not level 1 and 2
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)