有人可以帮我弄清楚这个SQL查询吗?
我有下表:
ID | Name | ManagerId
1 | Alice | 4
2 | Bob | 4
3 | Carol | 4
4 | Xavier | 5
5 | Zack | NULL
我希望新表看起来像这样:
ID | Name | Manager Name
1 | Alice | Xavier
2 | Bob | Xavier
3 | Carol | Xavier
4 | Xavier | Zack
5 | Zack | NULL
因此,从本质上讲,我想将第三列从“ ManagerId”替换为“ Manager Name”,其中所有信息都在同一表中检索。
有人可以帮助我查询吗?
我在想类似以下内容,但它甚至没有编译:
WITH EmployeeCTE AS
(
SELECT *, ID, Name, ManagerID OVER(PARTITION BY ID ORDER BY ID)
FROM Employee
)
SELECT ID, Name, EmployeeCTE.Name as "Manager Name"
FROM EmployeesCTE
我又尝试过一次,但是很快就陷入了困境:
SELECT ID, Name, ??
INNER JOIN Employee ON ID = Employee.ID
FROM Employee
答案 0 :(得分:4)
只需使用join
:
select e.*, m.name as manager_name
from employee e left join
employee m
on e.managerid = m.id