create a procedure like thisCREATE PROC GetHierarchy@Emp varchar(100)ASCREATE TABLE #Temp(Child varchar(10),Parent varchar(10),Level int)DECLARE @Level intSET @Level=0INSERT INTO #TempSELECT Employee_Name,Team_Lead_Id,@LevelFROM #TestWHERE Employee_Name=@EmpWHILE @@ROWCOUNT>0BEGINSET @Level=@Level +1--SELECT * FROM #TempINSERT INTO #TempSELECT t.Employee_Name,t.Team_Lead_Id,@LevelFROM #Test tINNER JOIN #Temp tmpON tmp.Child = t.Team_Lead_IdAND tmp.Level=@level-1LEFT JOIN #Temp tmp1ON tmp1.Child = t.Employee_NameAND tmp1.Parent = t.Team_Lead_IdAND tmp1.Level = @Level-1WHERE tmp1.Child IS NULLENDSELECT * FROM #TempDROP TABLE #TempGOthen call it like:-CREATE TABLE #test(Employee_code varchar(10),Employee_Name varchar(100),Team_Lead_Id varchar(10))INSERT #TestVALUES('E1', 'E1', 'E1'),('E2', 'E2', 'E1'),('E3', 'E3', 'E1'),('E9', 'E4', 'E3'),('E10', 'A10', 'E4'),('E11', 'A11', 'E4'),('E12' ,'A12', 'E4'),('E13' ,'A13', 'E4'),('E14' ,'A14', 'E4'),('E15' ,'A15' ,'E4'),('E16', 'A16', 'E4'),('E17', 'A17', 'E4'),('E18' ,'A18' ,'E4'),('E19' ,'A19' ,'E4'),('E20' ,'A20' ,'E4')EXEC GetHierarchy 'E4'output----------------------------------Child Parent LevelE4 E3 0A10 E4 1A11 E4 1A12 E4 1A13 E4 1A14 E4 1A15 E4 1A16 E4 1A17 E4 1A18 E4 1A19 E4 1A20 E4 1in actual case replace #test with your actual table everywhere------------------------------------------------------------------------------------------------------SQL Server MVPhttp://visakhm.blogspot.com/