Obține poziția în ierarhie
O problemă importantă atunci când lucrezi cu recursivitatea este urmărirea nivelului de recursivitate. În organizația IT, acest lucru înseamnă să știi poziția fiecărui angajat în ierarhie.

Pentru aceasta, vei folosi un câmp LEVEL care ține evidența pasului curent al recursivității. Trebuie să introduci câmpul în membrul ancoră și să incrementezi această valoare la fiecare pas de recursivitate în membrul recursiv.
Reține că primul nivel al ierarhiei este 0, al doilea nivel este 1 și așa mai departe.
Acest exercițiu face parte din cursul
Interogări ierarhice și recursive în SQL Server
Instrucțiuni pentru exercițiu
- Inițializează câmpul
LEVELcu valoarea 1 la începutul recursivității. - Selectează informațiile directorului IT ca pas inițial al CTE-ului, filtrând după
Supervisor. - Setează
LEVELla pasul curent al recursivității. - Realizează un
JOINcu CTE-ul definit peID-urile supervizorului și ale angajatului.
Exercițiu interactiv practic
Încearcă acest exercițiu completând acest cod de exemplu.
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;