获取层级位置
在处理递归时,一个重要问题是跟踪递归的层级。在 IT 组织中,这意味着要记录每位员工在层级结构中的位置。

为此,您将使用一个 LEVEL 字段来记录当前的递归步。您需要在锚成员中引入该字段,并在递归成员中在每一步递增该值。
请注意,第 1 个层级为 0,第 2 个层级为 1,依此类推。
本练习是课程的一部分
SQL Server 中的分层与递归查询
练习说明
- 在递归开始时将
LEVEL初始化为 1。 - 通过对
Supervisor进行筛选,选择 IT 总监的信息作为 CTE 的初始步骤。 - 将
LEVEL设为当前的递归步。 - 在主管与员工的
ID上与已定义的 CTE 执行JOIN。
交互式实操练习
通过完成这段示例代码来试试这个练习。
WITH employee_hierarchy AS (
SELECT
ID,
NAME,
Supervisor,
-- Initialize the field LEVEL
___ as LEVEL
FROM employee
-- Start with the supervisor ID of the IT Director
WHERE ___ = ___
UNION ALL
SELECT
emp.ID,
emp.NAME,
emp.Supervisor,
-- Increment LEVEL by 1 each step
___ + 1
FROM employee emp
JOIN employee_hierarchy
-- JOIN on supervisor and ID
ON emp.___ = employee_hierarchy.___)
SELECT
cte.Name, cte.Level,
emp.Name as ManagerID
FROM employee_hierarchy as cte
JOIN employee as emp
ON cte.Supervisor = emp.ID
ORDER BY Level;