В настоящее время я запускаю запрос CTE для рекурсивной сборки иерархии сотрудников из таблицы сотрудников, аналогичной тому, что демонстрируют наиболее рекурсивные примеры. Где я застрял в том, что я пытаюсь запросить одного сотрудника и получить иерархию над ним. Ниже приведен пример таблицы я пытаюсь работать с:SQL CTE Recursion: возвращающие родительские записи
Employees
===========================================================================
EmployeeID MgrID Name
1 null Joe
2 1 John
3 2 Rob
4 2 Eric
Ниже приводится SQL, что позволяет мне, чтобы отобразить иерархию сверху вниз:
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
Где я застрял является что я не могу понять, как запросить сотрудника низшего уровня, либо Роба, либо Эрика, и вернуть иерархию выше него от Джо> Джона> Эрика. Кажется, что это должно быть легко, но я не могу определить это для меня.
Использование примера таблицы в моем сообщении, я хотел бы запросить у Эрика и вернуть набор записей с тремя записями, в которых показаны его записи и два человека над ним. Конечная цель - быть отвратительным запросом любого сотрудника и видеть цепочку команд сотрудника вплоть до вершины. – Tehrab
Я редактировал, чтобы дать вам Эрика и его менеджеров. –
Всегда простые вещи. Отмечено, как ответили. – Tehrab