Obter a posição na hierarquia
Um problema importante ao lidar com recursão é rastrear o nível de recursão. Na organização de TI, isso significa acompanhar a posição de cada pessoa na hierarquia.

Para isso, você vai usar um campo LEVEL que registra a etapa atual da recursão. Você precisa introduzir esse campo no membro âncora e incrementá-lo a cada etapa de recursão no membro recursivo.
Lembre-se: o primeiro nível da hierarquia é 0, o segundo nível é 1 e assim por diante.
Este exercício faz parte do curso
Consultas Hierárquicas e Recursivas no SQL Server
Instruções do exercício
- Inicialize o campo
LEVELcomo 1 no início da recursão. - Selecione as informações do diretor de TI como etapa inicial da CTE, filtrando por
Supervisor. - Defina
LEVELpara a etapa atual da recursão. - Faça um
JOINcom a CTE definida, usando osIDs do supervisor e do funcionário.
Exercício interativo prático
Experimente este exercício completando este código de exemplo.
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;