Wyznacz pozycję w hierarchii
Ważnym wyzwaniem przy pracy z rekurencją jest śledzenie aktualnego poziomu rekurencji. W strukturze organizacji IT oznacza to monitorowanie pozycji każdego pracownika w hierarchii.

Do tego celu użyjesz pola LEVEL, które przechowuje numer bieżącego kroku rekurencji. Musisz wprowadzić to pole w członie bazowym i zwiększać jego wartość o jeden na każdym kolejnym kroku rekurencji w członie rekurencyjnym.
Pamiętaj, że pierwszy poziom hierarchii to 0, drugi poziom to 1 i tak dalej.
To ćwiczenie jest częścią kursu
Hierarchiczne i rekurencyjne zapytania w SQL Server
Instrukcje do ćwiczenia
- Zainicjuj pole
LEVELwartością 1 na początku rekurencji. - Wybierz informacje o dyrektorze IT jako krok początkowy CTE, filtrując po kolumnie
Supervisor. - Ustaw
LEVELna numer bieżącego kroku rekurencji. - Wykonaj
JOINze zdefiniowanym CTE, łącząc identyfikatoryIDprzełożonego i pracownika.
Interaktywne ćwiczenie praktyczne
Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.
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;