我是SQL新手所以请耐心等待。我设法得到每个员工的输出列表,他们的职位,以及他们向员工报告的员工ID(也就是他们的经理)。我无法为我的生活找出如何正确添加两个额外的列(ManagerName
和ManagerJobTitle
)以及必要的正确信息。
到目前为止,这是我的查询。
Select (FirstName + ' ' + LastName) as EmployeeName, Title as JobTitle, ReportsTo
From Employees E
Order By ReportsTo
答案 0 :(得分:1)
您没有显示您的表的任何架构,但是从您的查询中我可以看到您缺少与管理器表的连接,从那里可能应该来的那两列。
编辑:好的,现在我明白了。员工表与自身相关。你没有为表格指定PK,所以我假设员工有一个Id。如果密钥是另一列,只需在下面的查询中进行更改:
Select (E FirstName + ' ' + E.LastName) as EmployeeName,
E.Title as JobTitle,
(R.FirstName + ' ' + R.LastName) as 'ManagerName',
R.Title as 'ManagerTitle'
From Employees E
LEFT JOIN
Employees R ON E.ReportsTo = R.Id
Order By ReportsTo
修改2 :从INNER JOIN
更改为LEFT JOIN
,因为员工无需经理。
答案 1 :(得分:0)
Select (E.FirstName + ' ' + E.LastName) as EmployeeName, E.Title as JobTitle, mgr.ReportsTo, (mgr.FirstName + ' ' + mgr.LastName) as ManagerName, mgr.Title as MamagerJobTitle
From Employees E
Left join Employees mgr on E.EmployeeID = mgr.ReportsTo
Order By ReportsTo
注意:根据我的理解,ReportsTo列有employeeID,他们向任何管理员报告,如果没有,请用mgr替换该列.ReportsTo