Ottieni la posizione nella gerarchia
Un problema importante quando si lavora con la ricorsione è tenere traccia del livello di ricorsione. Nell'organizzazione IT, questo significa monitorare la posizione di ciascun dipendente nella gerarchia.

Per questo userai un campo LEVEL che tiene traccia dell'attuale passo di ricorsione. Devi introdurre il campo nel membro di ancoraggio e incrementarlo a ogni passo di ricorsione nel membro ricorsivo.
Ricorda: il primo livello della gerarchia è 0, il secondo livello è 1 e così via.
Questo esercizio fa parte del corso
Query gerarchiche e ricorsive in SQL Server
Istruzioni dell'esercizio
- Inizializza il campo
LEVELa 1 all'inizio della ricorsione. - Seleziona le informazioni del direttore IT come passo iniziale della CTE filtrando su
Supervisor. - Imposta
LEVELal passo di ricorsione corrente. - Esegui un
JOINcon la CTE definita sugliIDdel supervisore e del dipendente.
esercizio interattivo pratico
Prova questo esercizio completando questo codice di esempio.
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;