U can use something like this...
Create Table #Temp
(
UserGroup Nvarchar(40)
)
Insert into #Temp
Values('A'),('B'),('C'),('D'),('E')
;With Cte
as
(Select UserGroup,Row_Number()Over(Order by UserGroup) [Hirearchy] From #Temp)
Select Top(3) c.UserGroup,c.Hirearchy from Cte c
Inner join Cte c1 on c.Hirearchy <=c1.Hirearchy
Where c1.UserGroup='E'
Order by c.Hirearchy Desc
Drop Table #Temp
Output:
UserGroup Hirearchy
E 5
D 4
C 3
-- Edit
Query as per your Updated table Structure...
Create Table #Temp
(
Id Int,
Name Nvarchar(40),
ReportingManager Nvarchar(40)
)
Insert into #Temp
Values(1,'A','B'),(2,'B','C'),(3,'C','D'),(4,'D','E'),(5,'E','F')
Declare @LoginName Nvarchar(40) ='E'
;With cte (Id,Name,ReportingManager,Hierarchy) as
(
Select Id,Name,ReportingManager,1 from #Temp Where Name=@LoginName
Union all
Select t.Id,t.Name,t.ReportingManager,c.Hierarchy+1 From #Temp t
Inner join cte c on t.ReportingManager=c.Name
)
Select Id,Name,ReportingManager,Hierarchy
from cte Where Hierarchy <=3
Drop Table #Temp
Output:
Id Name ReportingManager Hierarchy
5 E F 1
4 D E 2
3 C D 3