我有员工列表,每个人都可以选择一个助理。所有员工都有EmpID,包括助理。AssistantID是助手的EmpID。我想通过EmpID查询并得到他们的AssistantID。特别注意:终极助手是AssistantID为空的人。举个例子:苏珊的助手最终是弗雷德,苏珊,约翰,->,弗雷德。是否有人可以帮助查询/子查询来检索此信息?使用标准SQL,例如,没有专有sql。
例如:
EmpID Name AssistantID
=======================
1, Bob, NULL
2, Susan, 3
3, John, 4
4, Mary, 6
5, Bill, NULL
6, Fred, NULL发布于 2018-01-08 02:30:49
如果我没理解错的话,您想要检索员工最底层的助理。
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
) RecordsDemo
https://stackoverflow.com/questions/48139830
复制相似问题