Hello galen,
I prepared the following Recursive SQL CTE statement for fetching the hierarchy. For reaching the managers of an employee, I used new SQL LAG function
I hoped this helps for the solution
declare @lvl int = 5
declare @emp varchar(20) = ‘Level5 - 1’
;with cte as (
select h.EmployeID Employee, h.EmployeID, h.EmployeID ReportsToID, @lvl as Lvl
from Hierarchy h
where h.EmployeID NOT IN (SELECT ReportsToID from Hierarchy)
and EmployeID = @emp – IN (‘Level5 - 1’, ‘Level5 - 2’)-- @emp
union all
select cte.Employee, h.*, cte.Lvl - 1 as Lvl
from Hierarchy h
inner join cte on h.EmployeID = cte.ReportsToID
), manager as (
select
Lvl,
Employee,
Lag(ReportsToID,1,NULL) over (Order By Lvl) Lvl4Man,
Lag(ReportsToID,2,NULL) over (Order By Lvl) Lvl3Man,
Lag(ReportsToID,3,NULL) over (Order By Lvl) Lvl2Man,
Lag(ReportsToID,4,NULL) over (Order By Lvl) Lvl1Man
from cte
)
select * from manager where Lvl = @lvl
I could only provide 5 level of sample data, it is difficult without the DDL and sample data
Here is my data which I used for the above script
create table Hierarchy (EmployeID varchar(100), ReportsToID varchar(100))
insert into Hierarchy select ‘Level2 - 1’, ‘President’
insert into Hierarchy select ‘Level2 - 2’, ‘President’
insert into Hierarchy select ‘Level3 - 1’, ‘Level2 - 1’
insert into Hierarchy select ‘Level3 - 2’, ‘Level2 - 1’
insert into Hierarchy select ‘Level3 - 3’, ‘Level2 - 2’
insert into Hierarchy select ‘Level3 - 4’, ‘Level2 - 2’
insert into Hierarchy select ‘Level4 - 1’, ‘Level3 - 1’
insert into Hierarchy select ‘Level4 - 2’, ‘Level3 - 1’
insert into Hierarchy select ‘Level4 - 3’, ‘Level3 - 2’
insert into Hierarchy select ‘Level4 - 4’, ‘Level3 - 2’
insert into Hierarchy select ‘Level4 - 5’, ‘Level3 - 3’
insert into Hierarchy select ‘Level4 - 6’, ‘Level3 - 3’
insert into Hierarchy select ‘Level4 - 7’, ‘Level3 - 4’
insert into Hierarchy select ‘Level4 - 8’, ‘Level3 - 4’
insert into Hierarchy select ‘Level5 - 1’, ‘Level4 - 1’
insert into Hierarchy select ‘Level5 - 2’, ‘Level4 - 1’
insert into Hierarchy select ‘Level5 - 3’, ‘Level4 - 2’
insert into Hierarchy select ‘Level5 - 4’, ‘Level4 - 2’
insert into Hierarchy select ‘Level5 - 5’, ‘Level4 - 3’
insert into Hierarchy select ‘Level5 - 6’, ‘Level4 - 3’
insert into Hierarchy select ‘Level5 - 7’, ‘Level4 - 4’
insert into Hierarchy select ‘Level5 - 8’, ‘Level4 - 4’
insert into Hierarchy select ‘Level5 - 9’, ‘Level4 - 5’
insert into Hierarchy select ‘Level5 - 10’, ‘Level4 - 5’
insert into Hierarchy select ‘Level5 - 11’, ‘Level4 - 6’
insert into Hierarchy select ‘Level5 - 12’, ‘Level4 - 6’
insert into Hierarchy select ‘Level5 - 13’, ‘Level4 - 7’
insert into Hierarchy select ‘Level5 - 14’, ‘Level4 - 7’
insert into Hierarchy select ‘Level5 - 15’, ‘Level4 - 8’
insert into Hierarchy select ‘Level5 - 16’, ‘Level4 - 8’