递归CTE

sql
阅读 38 收藏 0 点赞 0 评论 0

new_gist_file.sql
WITH EmployeeCTE AS
(
    
    
    --anchor 
     Select EmployeeId, EmployeeName, ManagerID
     From Employees
     Where EmployeeId =7
    
     UNION ALL
    
     Select Employees.EmployeeId , Employees.EmployeeName,
             Employees.ManagerID
     From Employees
     JOIN EmployeeCTE
     ON Employees.EmployeeId = EmployeeCTE.ManagerID
)

##this cte will give me all the people up in the ladder
select * from EmployeeCTE;


#### DO A SELF JOIN NOW OF THIS CTE because we want names in place of ids

on CTE1.employeeid=CTE2managerid


Select E1.EmployeeName, ISNULL(E2.EmployeeName, 'No Boss') as ManagerName
From EmployeeCTE E1
LEFT Join EmployeeCTE E2
ON E1.ManagerID = E2.EmployeeId

EXAMPLE
https://myadventuresincoding.wordpress.com/2014/05/02/sql-server-simple-recursive-query-example/












评论列表


问题


面经


文章

微信
公众号

扫码关注公众号