【问题标题】:Recursive CTE that gets Employees by Manager按经理获取员工的递归 CTE
【发布时间】:2018-11-12 05:23:20
【问题描述】:

我正在编写一个递归 CTE,它获取所有员工及其经理的列表。到目前为止我有这个-

WITH GetEmployeeByManager as 
(
--Anchor Query
SELECT FirstName, LastName, DepartmentID,ManagerEmployeeID
FROM dbo.Employees
WHERE ManagerEmployeeID IS NULL

Union ALL

--Recursive Query
SELECT FirstName, LastName, DepartmentID, ManagerEmployeeID
FROM dbo.Employees 
WHERE ManagerEmployeeID IS NOT NULL
)
SELECT *
FROM GetEmployeeByManager


我需要能够有一个名为“经理名字”和“经理姓氏”的列,它从“经理员工 ID”列中获取每个值,并使用它从原始名称中找到正确的名字和姓氏员工表。我尝试了许多不同的策略,但似乎没有任何效果。有什么建议么?谢谢。

【问题讨论】:

标签: sql recursion common-table-expression


【解决方案1】:

这不需要递归查询,只需将表与自身进行左连接:

SELECT e.FirstName, e.LastName, e.DepartmentID,
       m.FirstName as ManagerFirstName, m.LastName as ManagerLastName
FROM dbo.Employees e
LEFT OUTER JOIN dbo.Employees m ON m.EmployeeID = e.ManagerEmployeeID

假设您只想要每个员工的直接经理。

【讨论】:

    猜你喜欢
    • 2015-10-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多