我正在编写一个递归CTE,该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”列中获取每个值,并使用它来从原始员工表。我尝试了许多不同的策略,但似乎没有任何效果。有什么建议么?谢谢。
答案 0 :(得分:3)
这不需要递归查询,而只需将表与自身左连接:
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
假设您只希望每个员工的直接经理。