///
| NoEmpregado | NoDepto | Level |
|---|---|---|
| Maria | Presidencia | 0 |
| Jose | DivisaoA | 1 |
| Paulo | DivisaoA | 1 |
| Lucas | DeptoA | 2 |
| Francisco | DeptoA | 2 |
| Roberto | DeptoB | 2 |
A consulta com o trecho de sintaxe mostrado abaixo retornará os registros ilustrados na tabela acima.
WITH Emp (IDGerente, IDEmpregado, NoEmpregado, NoDepto,Level)
AS(
SELECT e.IDGerente, e.IDEmpregado, e.NoEmpregado, e.NoDepto,0 AS Level
FROM dbo.Empregado AS e WHERE IDGerente IS NULL
UNION ALL
SELECT e.IDGerente, e.IDEmpregado, e.NoEmpregado, e.NoDepto, Level+1
FROM dbo.Empregado AS e INNER JOIN Emp ON e.IDGerente = emp.idempregado)
SELECT IdGerente, IDEmpregado, NoEmpregado, NoDepto, Level
FROM Emp