sql server - Get all employees under manager with CTE -


i have table has employee details

empid managerid level value 1      0         5     ceo 2      1         4     emp 3      1         4     org 4      2         3     null 5      2         3     null 6      2         2     null 7      1         1     null 8      5         0     null 

now, have start wil employee id 2 , found it's low level hirerachy (i.e. 2, 4, 5, 6, 8) , assign them value same "2" (i.e. emp).

expected output :

  empid managerid level value     1      0         5     ceo     2      1         4     emp     3      1         4     org     4      2         3     emp     5      2         3     emp     6      2         2     emp     7      1         1     null     8      5         0     emp 

what trying:

    ; levelhire (         select empid, managerid,level         employeetable         empid =2         union         select lh.empid,  rc.managerid, lh.level         levelhire lh         inner join [employeetable] rc         on lh.empid= rc.empid  )  select * levelhire option (maxrecursion 0) 

how can achieve same?

you can try this

;with employeetable  ( select 1 empid,0 managerid ,   5 level ,'ceo' value union select 2,1,   4,'emp' union select 3,1,   4,'org' union select 4,2,   3,null union select 5,2,   3,null union select 6,2,   2,null union select 7,1,   1,null union select 8,5,   0,null ),levelhire (         select empid, managerid,level,value         employeetable         empid = 2         union         select rc.empid,  rc.managerid, lh.level,lh.value         levelhire lh         inner join [employeetable] rc         on lh.empid= rc.managerid ) select  e.empid, e.managerid,e.level,isnull(e.value ,lh.value) value employeetable e     left join levelhire lh     on e.empid = lh.empid 

Comments

Popular posts from this blog

neo4j - finding mutual friends in a cypher statement starting with three or more persons -

php - How to remove letter in front of the word laravel -

minify - Minimizing css files -