开始使用免费开始使用

获取层级位置

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

A section of the entire hierarchy

为此,您将使用一个 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;
编辑并运行代码