Quem é o seu gerente?
Neste exercício, vamos usar o conjunto de dados de uma organização de TI fornecido na tabela employee. A tabela tem os campos ID (número de identificação do funcionário), Name (nome do funcionário) e Supervisor (número de identificação do supervisor).
A organização de TI é composta por diferentes cargos e níveis.

A organização tem um diretor de TI (ID=1, Heinz Griesser, Supervisor=0) com muitos subordinados. Abaixo do diretor de TI, está o gerente de arquitetura de TI (ID=10, Andreas Sternig, Supervisor=1) com três subordinados. Para Andreas Sternig, Supervisor=1, que é o ID do diretor de TI.
Primeiro, queremos responder à pergunta: Quem são os supervisores de cada funcionário?
Vamos resolver esse problema consultando o conjunto de dados de forma recursiva.
Este exercício faz parte do curso
Consultas Hierárquicas e Recursivas no SQL Server
Instruções do exercício
- Crie uma CTE com o nome
employee_hierarchy. - Selecione as informações do diretor de TI como passo inicial da CTE, filtrando pelo
Supervisordele. - Faça um join com
employeepara obter o nome do gerente.
Exercício interativo prático
Experimente este exercício completando este código de exemplo.
-- Create the CTE employee_hierarchy
WITH ___ AS (
SELECT
ID,
NAME,
Supervisor
FROM employee
-- Start with the IT Director
WHERE ___ = ___
UNION ALL
SELECT
emp.ID,
emp.NAME,
emp.Supervisor
FROM employee emp
JOIN employee_hierarchy
ON emp.Supervisor = employee_hierarchy.ID)
SELECT
cte.Name as EmployeeName,
emp.Name as ManagerName
FROM employee_hierarchy as cte
JOIN employee as emp
-- Perform the JOIN on Supervisor and ID
ON cte.___ = emp.___;