2016-08-31 2 views
3

Как найти имя менеджера здесь. Каждый менеджер также является сотрудником.Как получить имя менеджера от имени пользователя

EmpID Name ManagerId 
    1  A  3 
    2  B  1 
    3  C  2 
    4  D  5 
    5  E  1 

Ожидаемый результат, как этот

EmpID Name ManagerName 
    1  A  C 
    2  B  A 
    3  C  B 
    4  D  E 
    5  E  A 
+0

@ mm759 Каждый менеджер также является сотрудником, поэтому имена предоставляются. См. [Мой ответ] (http://stackoverflow.com/a/39241981/2422776). – Mureinik

ответ

1

Вы можете самостоятельно присоединиться к столу, и использовать соединяемыми экземпляр, чтобы получить имя менеджера:

SELECT e.empid, e.name, m.name 
FROM employee e 
JOIN employee m on e.managerid = m.empid 
+0

Строка 'JOIN' должна быть' JOIN employee m на e.managerid = m.empid'. У вас есть 'e.' с обеих сторон объединенных полей. – Shiva

+0

@Shiva arg, глупая опечатка. Вы правы, конечно. Отредактировано и исправлено. – Mureinik

1

Вы должны использовать Left Регистрация для желаемого результата. В противном случае вы пропустите сотрудника, у которого нет менеджеров.

SELECT e.empid, e.name Employee, ISNULL(e1.name,'') Manager 
FROM employee e 
LEFT JOIN employee e1 on e.managerid = e1.empid 
0
CREATE TABLE #MYTEMP 
(
    EmpID INT 
    ,Name VARCHAR(10) 
    ,ManagerId INT 
) 

INSERT INTO #MYTEMP VALUES 
(1,'A',3),(2,'B',1),(3,'C',2),(4,'D',5),(5,'E',1) 

SELECT EMP.EmpID AS EMPNO, 
     EMP.Name AS EMPLOYEE, 
     MGR.Name AS MANAGER 
FROM #MYTEMP EMP 
JOIN #MYTEMP MGR 
ON EMP.ManagerId = MGR.EmpID 
Смежные вопросы