階層上の位置を取得する
再帰を扱う際の重要な課題は、再帰の深さ(レベル)を追跡することです。IT 組織では、これは各従業員が階層のどの位置にいるかを管理することを意味します。

そのために、現在の再帰ステップを記録する LEVEL フィールドを使います。アンカー メンバーでこのフィールドを導入し、再帰メンバーでは各ステップでこの値をインクリメントしてください。
最初の階層レベルは 0、2 番目のレベルは 1、その先も同様であることに注意してください。
この演習はコースの一部です
SQL Server における階層型クエリと再帰クエリ
演習の手順
- 再帰の開始時に
LEVELフィールドを 1 に初期化します。 Supervisorを条件にフィルタして、CTE の初期ステップとして IT ディレクターの情報を選択します。LEVELを現在の再帰ステップに設定します。- 監督者と従業員の
IDを用いて、定義した CTE とJOINを実行します。
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
WITH employee_hierarchy AS (
SELECT
ID,
NAME,
Supervisor,
-- Initialize the field LEVEL
___ as LEVEL
FROM employee
-- Start with the supervisor ID of the IT Director
WHERE ___ = ___
UNION ALL
SELECT
emp.ID,
emp.NAME,
emp.Supervisor,
-- Increment LEVEL by 1 each step
___ + 1
FROM employee emp
JOIN employee_hierarchy
-- JOIN on supervisor and ID
ON emp.___ = employee_hierarchy.___)
SELECT
cte.Name, cte.Level,
emp.Name as ManagerID
FROM employee_hierarchy as cte
JOIN employee as emp
ON cte.Supervisor = emp.ID
ORDER BY Level;