【发布时间】:2021-08-25 02:15:42
【问题描述】:
我有一个雇员表,其中有一列 Employee_ID 和 SuperiorID。我想获得特定员工的所有层级上司。比如Employee_ID-1000000的上级是1000001,1000002,1000003,1000004,1000005
+--------------------------+
| Employee_ID | SuperiorID |
+--------------------------+
| 1000000 | 1000001 |
| 1000001 | 1000002 |
| 1000002 | 1000003 |
| 1000003 | 1000004 |
| 1000004 | 1000005 |
+--------------------------+
Employee_ID - 1000005 是公司的总裁。
我现在有一个问题:
DECLARE @EmployeeNo AS INT = 1000000
SELECT Superior_ID from EmployeeTable WHERE Employee_ID = @EmployeeNo
UNION
SELECT Superior_ID from EmployeeTable WHERE Employee_ID = (select Superior_ID from EmployeeTable WHERE Employee_ID = @EmployeeNo)
UNION
SELECT Superior_ID from EmpoyeeTable WHERE Employee_ID = ( SELECT Superior_ID from EmployeeTable WHERE Employee_ID = (select Superior_ID from EmployeeTable WHERE Employee_ID = @EmployeeNo))
有没有更好的方法来做这个?
感谢您的帮助。
【问题讨论】:
-
递归 CTE??
标签: sql sql-server tsql sql-server-2012