開始使用免費開始

我的主管是誰?

在這個練習中,你要從階層最上層的老闆一路找到最下層員工的路徑。為了達成這個目標,需要把每一步取得的資訊整合到同一個欄位。你可以把 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 = ___;
編輯並執行程式碼