开始使用免费开始使用

我的上级是谁?

在本练习中,我们希望从层级最顶端的老板,一路获取到层级最底部员工的路径。为此,您需要把每一步得到的信息合并到同一个字段中。可以通过将多个 ID 使用 CAST() 从数字转换为字符串后进行拼接来实现。例如,使用 CAST(ID AS VARCHAR(MAX)) 将数值类型的 ID 转换为字符类型。

现在的任务是为员工 Chris FeierabendID=18)和 Jasmin MentilID=16)找到一直通向组织顶端的路径。输出格式应类似于:boss_first_level -> boss_second_level ...。请选取员工的 ID,而不是他们的姓名。

本练习是课程的一部分

SQL Server 中的分层与递归查询

查看课程

练习说明

  • Path 初始化为上级主管(0)的 ID,并设定递归的起始条件。
  • 使用 UNION 合并锚成员,并定义递归成员的字段(IDNameSupervisor)。
  • 在每一步将上级主管 Supervisor 的 ID 追加到 Path
  • 在 CTE 中选择员工 Chris FeierabendJasmin Mentil 的 ID。

交互式实操练习

通过完成这段示例代码来试试这个练习。

WITH employee_Hierarchy AS (
	SELECT
		ID, 
  		NAME,
  		Supervisor,
  		-- Initialize the Path with CAST
  		___('___' AS VARCHAR(MAX)) as Path
	FROM employee
	WHERE Supervisor = 0
	-- UNION the anchor query 
  	___ ALL
    -- Select the recursive query fields
	SELECT 
  		emp.___,
  		emp.___,
  		emp.___,
  		-- Add the supervisor in each step. CAST the supervisor.
        Path + '->' + ___(emp.___ AS VARCHAR(MAX))
	FROM employee emp
		INNER JOIN employee_Hierarchy
  		ON emp.Supervisor = employee_Hierarchy.ID
)

SELECT Path
FROM employee_Hierarchy
-- Select the employees Chris Feierabend and Jasmin Mentil
WHERE ___ = 16 OR ID = ___;
编辑并运行代码