Get all employees under manager with CTE

前端 未结 2 820

I have a table which has employee details

EmpId ManagerId Level Value
1      0         5     CEO
2      1         4     EMP
3      1         4     ORG
4              


        
2条回答
  •  情歌与酒
    2020-12-21 21:08

    you can try something like this

    ;WITH EmployeeTable AS 
    (
    SELECT 1 EmpId,0 ManagerId ,   5 Level ,'CEO' Value
    UNION ALL SELECT 2,1,   4,'EMP'
    UNION ALL SELECT 3,1,   4,'ORG'
    UNION ALL SELECT 4,2,   3,NULL
    UNION ALL SELECT 5,2,   3,NULL
    UNION ALL SELECT 6,2,   2,NULL
    UNION ALL SELECT 7,1,   1,NULL
    UNION ALL SELECT 8,5,   0,NULL
    ),LevelHire AS
    (
            SELECT EmpId, ManagerId,Level,Value
            FROM EmployeeTable
            WHERE EmpId = 2
            UNION ALL
            SELECT RC.EmpId,  RC.ManagerId, Lh.Level,LH.Value
            FROM LevelHire LH
            INNER JOIN [EmployeeTable] RC
            ON LH.EmpId= RC.ManagerId
    )
    SELECT  E.EmpId, E.ManagerId,E.Level,ISNULL(E.Value ,LH.Value) Value
    FROM EmployeeTable E
        LEFT JOIN LevelHire LH
        ON E.EmpId = LH.EmpId
    

提交回复
热议问题