I tried with the queries given, but the output isnt as expected
Did you try all of suggestions? For example:
declare @emp table
(
managerid int,
employeeid varchar(20),
Reporting_Manager_id varchar(20)
)
insert into @emp values
(1371,'F4',null),
(1371,'F4.10','F4'),
(1371,'F4.20','F4'),
(1371,'F4.20.10','F4.20'),
(1371,'F4.20.20','F4.20'),
(1371,'F4.20.20.00','F4.20.20'),
(1371,'F8',null),
(1371,'F11',null),
(1371,'F11.10','F11')
-- expected results:
select '1371' Level1,'F4' Level2, null Level3, null Level4, null Level5
union
select '1371', 'F4', null, null, null
union
select '1371', 'F4', 'F4.10',null, null
union
select '1371', 'F4','F4.20', null, null
union
select '1371','F4','F4.20','F4.20.10',null
union
select '1371','F4','F4.20','F4.20.20',null
union
select '1371','F4','F4.20','F4.20.20','F4.20.20.00'
union
select '1371', 'F8', null, null, null
union
select '1371', 'F11', null, null, null
union
select '1371', 'F11', 'F11.10', null, null
---
select distinct *
from
(
select
t1.managerid as Level1,
t1.employeeId as Level2,
t2.employeeId as Level3,
t3.employeeId as Level4,
t4.employeeId as Level5
from @emp t1
left join @emp t2 on t2.Reporting_Manager_id = t1.employeeId and t2.managerId = t1.managerId
left join @emp t3 on t3.Reporting_Manager_id = t2.employeeId and t3.managerId = t2.managerId
left join @emp t4 on t4.Reporting_Manager_id = t3.employeeId and t4.managerId = t3.managerId
where t1.Reporting_Manager_id is null
) t
group by grouping sets
(
(Level1, Level2, Level3, Level4, Level5),
(Level1, Level2, Level3, Level4),
(Level1, Level2, Level3),
(Level1, Level2)
)
order by Level1, Level2, Level3, Level4, Level5