ComeçarComece de graça

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.

A section of the entire hierarchy

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

Ver curso

Instruções do exercício

  • Inicialize o campo LEVEL como 1 no início da recursão.
  • Selecione as informações do diretor de TI como etapa inicial da CTE, filtrando por Supervisor.
  • Defina LEVEL para a etapa atual da recursão.
  • Faça um JOIN com a CTE definida, usando os IDs 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;
Editar e executar o código