【发布时间】:2011-03-03 22:54:48
【问题描述】:
我目前正在运行 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 返回他上方的层次结构。似乎这应该很容易,但我无法终生发现它。
【问题讨论】:
标签: sql-server recursion common-table-expression