SQL:助手?

时间:2018-01-07 17:38:23

标签: sql sql-server recursive-query

我有员工名单,每个人都可以选择助理。所有员工都有EmpID [包括助理]。 AssistantID是助理的EmpID。我想通过EmpID查询并获取他们的AssistantID。特别说明:最终助手是具有NULL for AssistantID的人。例如:Susan的助手最终是Fred [Susan - >约翰 - >马克 - >弗雷德。有人可以帮助查询/子查询来检索此信息吗? [使用标准SQL,例如,没有专有的sql]。

例如:

EmpID Name AssistantID
=======================
1, Bob, NULL
2, Susan, 3
3, John, 4
4, Mary, 6
5, Bill, NULL
6, Fred, NULL

1 个答案:

答案 0 :(得分:2)

如果我理解你的问题,你想找回员工的最低帮助。

WITH RCTE AS 
(
    SELECT * , EmpID AS TopEmp
    FROM EMPLOYEES c
    UNION ALL
    SELECT c.* , r.TopEmp
    FROM dbo.EMPLOYEES c
    INNER JOIN RCTE r ON c.EmpID = r.AssistantID
)
select EmployeeName,Assistant from
(
SELECT 
  e.EmpID AS EmployeeId,
  e.Name AS EmployeeName,
  r.Name AS Assistant,
  r.EmpID AS AssistantId
FROM RCTE r
inner join EMPLOYEES e ON r.TopEmp = e.EmpID
where r.AssistantID is null
) Records

Demo