我让CTE在重新诅咒员工表并建立一个扩展的员工ID列表以及所有直接和间接报告方面运作良好。
我正在尝试让姐妹CTE使用用户名而不是员工ID,但是在我做出更改后我没有得到任何数据......
以下是我使用employeeID
的工作代码,如何才能与NTID
(员工)和managerNTID
(经理)
CREATE FUNCTION fnGetEmployeeHierarchy
(
@EmployeeId int = null
)
RETURNS TABLE
AS
RETURN
(
WITH yourcte AS
(
SELECT EmployeeId, ManagerID, NTID, FullName--, Name
FROM Employees
WHERE EmployeeId = isnull(@EmployeeId,EmployeeId)
UNION ALL
SELECT e.EmployeeId, e.ManagerID, e.NTID, e.FullName--, e.Name
FROM Employees e
JOIN yourcte y ON e.ManagerID = y.EmployeeId
)
SELECT EmployeeId, ManagerID, NTID, FullName--, Name
FROM yourcte
)
答案 0 :(得分:0)
假设managerNTID
引用了经理的NTID
列 - 请尝试以下操作:
CREATE FUNCTION fnGetEmployeeHierarchyNew(@EmployeeNTID int = null)
RETURNS TABLE
AS
RETURN
(
WITH NewCTE AS
(
SELECT EmployeeId, ManagerID, NTID, FullName--, Name
FROM Employees
WHERE NTID = ISNULL(@EmployeeNTID, EmployeeNTID)
UNION ALL
SELECT e.EmployeeId, e.ManagerID, e.NTID, e.FullName--, e.Name
FROM Employees e
JOIN NewCTE y ON e.ManagerNTID = y.NTID
)
SELECT EmployeeId, ManagerID, NTID, FullName--, Name
FROM NewCTE
)