谁是您的经理?
在本练习中,我们将使用表 employee 提供的一家 IT 组织的数据集。该表包含字段 ID(员工编号)、Name(员工姓名)和 Supervisor(主管的编号)。
这家 IT 组织包含不同的角色和层级。

组织中有一位 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.___;