我的主管是誰?
在這個練習中,你要從階層最上層的老闆一路找到最下層員工的路徑。為了達成這個目標,需要把每一步取得的資訊整合到同一個欄位。你可以把 ID 從數字用 CAST() 轉成字串後再串接。例如,使用 CAST(ID AS VARCHAR(MAX)) 將數值型別的 ID 轉為字元型別。
現在的任務是找出員工 Chris Feierabend(ID=18)與 Jasmin Mentil(ID=16)從其位置一路到組織最上層的路徑。輸出格式應為:boss_first_level -> boss_second_level ...。請選取員工的 ID,而不是姓名。
本練習屬於課程
SQL Server 的階層式與遞迴查詢
練習說明
- 將
Path初始化為主管(0)的ID,並設定遞迴的起始條件。 - 使用
UNION合併錨點成員,並定義遞迴成員欄位(ID、Name、Supervisor)。 - 在每一步將主管
Supervisor的 ID 加到Path中。 - 在 CTE 中選取員工
Chris Feierabend與Jasmin 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 = ___;