你的主管是誰?
在這個練習中,我們會使用表格 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。 - 以 IT 總監的資料作為 CTE 的初始步驟,根據他的
SupervisorID 進行篩選。 - 和
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.___;