始める無料で始める

自分の上司は誰?

この演習では、階層の最上位にいるボスから、階層の最下位にいる従業員までのパスを取得します。そのために、各ステップで得られた情報を1つのフィールドにまとめる必要があります。これは、数値の IDCAST() を使って文字列に変換し、連結することで実現できます。例えば、数値型の ID を文字型に変換するには CAST(ID AS VARCHAR(MAX)) のようにします。

次のタスクは、従業員 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 = ___;
コードを編集して実行