Actualmente estoy ejecutando una consulta CTE para construir recursivamente una jerarquía de empleados de una tabla de empleados similar a la que muestran la mayoría de los ejemplos recursivos. Donde estoy atascado es que estoy tratando de buscar un solo empleado y recuperar la jerarquía por encima de él. A continuación se muestra un ejemplo de la tabla que estoy tratando de trabajar con:SQL CTE Recursion: Registros primarios recurrentes
Employees
===========================================================================
EmployeeID MgrID Name
1 null Joe
2 1 John
3 2 Rob
4 2 Eric
El siguiente es el SQL que me permite mostrar la jerarquía de arriba hacia abajo:
with employeeMaster as (
select p.EmployeeID, p.MgrID, p.Name
from Employees p
where p.MgrID is null
union all
select c.EmployeeID, c.MgrID, c.Name
from employeeMaster cte inner join Employees c on c.MgrID = cte.EmployeeID
)
select * from employeeMaster
Dónde estoy atascado es que no puedo encontrar la manera de consultar al empleado del nivel más bajo, ya sea Rob o Eric, y devolver la jerarquía por encima de él a Joe> John> Eric. Parece que esto debería ser fácil, pero no puedo detectarlo por mi vida.
Usando el ejemplo de la tabla en mi publicación, me gustaría consultar a Eric y devolver un conjunto de registros con tres registros que muestran su registro y las dos personas por encima de él. El objetivo final es hacer una consulta competente a cualquier empleado y ver la cadena de mando de ese empleado hasta llegar a la cima. – Tehrab
Lo edité para darte Eric y sus gerentes. –
Siempre las cosas simples. Marcado como respondido. – Tehrab