gpt4 book ai didi

sql-server - SQL CTE 递归 : Returning Parent Records

转载 作者:行者123 更新时间:2023-12-02 23:08:41 26 4
gpt4 key购买 nike

我当前正在运行 CTE 查询,以从员工表递归地构建员工层次结构,类似于大多数递归示例所演示的内容。我陷入困境的是,我正在尝试查询单个员工并检索他之上的层次结构。下面是我尝试使用的表格的示例:

Employees
===========================================================================
EmployeeID MgrID Name
1 null Joe
2 1 John
3 2 Rob
4 2 Eric

以下是允许我从上到下显示层次结构的 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

我陷入困境的是,我不知道如何查询最低级别的员工(Rob 或 Eric),并从 Joe > John > Eric 返回高于他的层次结构。看起来这应该很容易,但我一辈子都找不到它。

最佳答案

您是否正在寻找一个查询来根据层次结构的深度返回可变数量的列?或者只是一个字段中的串联字符串?

这里对您的查询进行了一个小小的更改,这将使 Eric 以及层次结构中高于他的任何人都可以找到。

WITH    employeeMaster
AS ( SELECT p.EmployeeID ,
p.MgrID ,
p.NAME
FROM Employees p
WHERE p.NAME = 'Eric'
UNION ALL
SELECT c.EmployeeID ,
c.MgrID ,
c.NAME
FROM employeeMaster cte
INNER JOIN Employees c ON c.EmployeeID = cte.MgrID
)
SELECT *
FROM employeeMaster m

关于sql-server - SQL CTE 递归 : Returning Parent Records,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5187641/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com