2010-06-08 45 views
0
;with Ranked(Empid,Mngrid,Empnm,RN,level) As 
    (select Empid,Mngrid ,Empnm ,row_number() over (order by Empid)AS RN , 
    0 as level from  dbo.EmpMngr), 
    AnchorRanked(Empid,Mngrid,Empnm,RN,level) 
    AS(select Empid,Mngrid,Empnm,RN ,level from Ranked), 
    RecurRanked(Empid,Mngrid,Empnm,RN,level) 
    AS(select Empid,Mngrid,Empnm,RN,level from AnchorRanked 
    Union All 
    select Ranked.Empid,Ranked.Mngrid,Ranked.Empnm,Ranked.RN,Ranked.level + 1 
    from Ranked 
    inner join RecurRanked 
     on Ranked.Empid = RecurRanked.Empid AND 
     Ranked.RN = RecurRanked.RN+1) 

select Empid,Empnm,level from RecurRanked 
+0

您可以编辑您的问题,以便它是可读的,请 – kamahl 2010-06-08 20:35:09

+0

日Thnx我想找到员工级别喜欢谁COMES IN X 1,Y 2,Z 2 A 3,B 3,C 4 – Vicky 2010-06-08 23:21:57

+0

这是我如何想要输出 – Vicky 2010-06-08 23:22:20

回答

0
 
;WITH OrgChart AS 
(
    SELECT EmpID, EmpNm, [Level] = 0 
    FROM EmpMngr 
    WHERE MngrID IS NULL 
    UNION ALL 
    SELECT e.EmpID, e.EmpNm, [Level] + 1 
    FROM OrgChart o 
    JOIN EmpMngr e ON (e.MngrID = o.EmpID) 
) 
SELECT EmpID, EmpNm, [Level] FROM OrgChart