Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 如何获得经理';s的名字来自于雇员的名字_Sql_Sql Server 2008_Select - Fatal编程技术网

Sql 如何获得经理';s的名字来自于雇员的名字

Sql 如何获得经理';s的名字来自于雇员的名字,sql,sql-server-2008,select,Sql,Sql Server 2008,Select,我如何在这里找到经理的名字。每个经理也是一名员工 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

我如何在这里找到经理的名字。每个经理也是一名员工

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

您可以自联接表,并使用联接实例获取管理器的名称:

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

您必须使用Left Join来获得所需的输出。否则,您将错过一些没有经理的员工

SELECT e.empid, e.name Employee, ISNULL(e1.name,'') Manager
FROM   employee e
LEFT JOIN   employee e1 on e.managerid = e1.empid

@mm759每位经理也是一名员工,因此提供了姓名。有关详细信息,请参阅。
JOIN
行应为
JOIN employee m on e.managerid=m.empid
。您在连接字段的两侧都有
e.
。@Shiva arg,愚蠢的打字错误。当然,你是对的。编辑和固定。
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