开始使用免费开始使用

谁是您的经理?

在本练习中,我们将使用表 employee 提供的一家 IT 组织的数据集。该表包含字段 ID(员工编号)、Name(员工姓名)和 Supervisor(主管的编号)。

这家 IT 组织包含不同的角色和层级。

A section of the entire hierarchy

组织中有一位 IT 总监(ID=1,Heinz Griesser,Supervisor=0),其下有多名下属员工。在 IT 总监之下,您可以找到 IT 架构经理(ID=10,Andreas Sternig,Supervisor=1),其下有 3 名下属员工。对 Andreas Sternig 而言,Supervisor=1,也就是 IT 总监的 ID

首先,我们要回答这个问题:每位员工的主管是谁?

我们将通过对数据集进行递归查询来解决这个问题。

本练习是课程的一部分

SQL Server 中的分层与递归查询

查看课程

练习说明

  • 创建名为 employee_hierarchy 的 CTE。
  • 在 CTE 的初始步骤中,按 IT 总监的 Supervisor 编号进行过滤,选取他的相关信息。
  • employee 进行连接,以获取经理的姓名。

交互式实操练习

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

-- Create the CTE employee_hierarchy
WITH ___ AS (
	SELECT
		ID, 
  		NAME,
  		Supervisor
	FROM employee
  	-- Start with the IT Director
	WHERE ___ = ___
	UNION ALL
	SELECT 
  		emp.ID,
  		emp.NAME,
  		emp.Supervisor
	FROM employee emp
  		JOIN employee_hierarchy
  		ON emp.Supervisor = employee_hierarchy.ID)
    
SELECT 
    cte.Name as EmployeeName,
    emp.Name as ManagerName
FROM employee_hierarchy as cte
	JOIN employee as emp
	-- Perform the JOIN on Supervisor and ID
	ON cte.___ = emp.___;
编辑并运行代码