2015-05-20 126 views
0
  • 7.1列出每位員工的員工姓名,員工職位,經理姓名和經理職位。
  • 對結果使用清晰的列別名,並且不要排除列表中的任何員工。

我是SQL新手,所以請耐心等待。我已經設法得到每個員工的輸出清單,他們的職位以及他們向其報告的員工的員工ID(也稱爲他們的經理)。我不知道如何正確添加兩列(ManagerNameManagerJobTitle)以及必要的正確信息。根據主鍵從其他列中的數據創建新列

這是我的查詢到目前爲止。

Select (FirstName + ' ' + LastName) as EmployeeName, Title as JobTitle, ReportsTo 
From Employees E 
Order By ReportsTo 

回答

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 JOINLEFT JOIN,作爲一個員工都可以沒有經理。

+0

沒有經理替換表中的列。經理的ID和信息都與其他人一樣在同一個員工表中列出。我將如何將Schema包含在內? –

+0

謝謝。在我讀完之前,我已經想出了答案,但這完全正確。 –

+0

@GabrielRainha ..好的複製和粘貼..你怎麼才能複製我的查詢並將其粘貼爲答案?我正在將此標記爲**版主**審覈。 –

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 

注:按我的理解,上級列有僱員誰擁有報告任何經理,如果沒有請與mgr.ReportsTo

相關問題