小编Teh*_*rab的帖子

SQL CTE递归:返回父记录

我目前正在运行CTE查询,以递归方式从employees表构建员工层次结构,类似于大多数递归示例所演示的.我被困的地方是我正在尝试查询单个员工并检索他上面的层次结构.下面是我尝试使用的表的示例:

Employees
===========================================================================
EmployeeID    MgrID    Name
1             null     Joe
2             1        John
3             2        Rob
4             2        Eric
Run Code Online (Sandbox Code Playgroud)

以下是允许我从上到下显示层次结构的SQL:

with employeeMaster as (
    select p.EmployeeID, p.MgrID, p.Name
    from Employees p
    where p.MgrID is null

    union all

    select c.EmployeeID, c.MgrID, c.Name
    from employeeMaster cte inner join Employees c on c.MgrID = cte.EmployeeID
)
select * from employeeMaster
Run Code Online (Sandbox Code Playgroud)

我陷入困境的是,我无法弄清楚如何查询最低级别的员工,无论是Rob还是Eric,并从Joe> John> Eric返回他上面的层次结构.似乎这应该很容易,但我无法发现它的生命.

sql-server recursion common-table-expression

5
推荐指数
1
解决办法
3932
查看次数