[英]SQL select sum from other table as a column via junction table
我有兩個常規表“ Tasks”和“ Employees”,還有一個聯結表EmployeeTasks簡化了,它們看起來像這樣
任務
雇員
EmployeeTasks
我試圖找到一個基於通用項目ID的tsql查詢,該查詢將提供總花費時間和每個員工完成的任務數量的摘要。 與此類似:
"Employee" | "Number of Tasks" | "Time Spent"
----------------------------------------
John | 5 | 123
Sam | 4 | 72
SELECT E.EmployeeName, COUNT(T.TaskID) AS [Number of Tasks], SUM(T.Duration) as [Time Spent]
FROM Employee E, EmployeeTasks ET, Tasks T
WHERE ET.EmployeeID = E.EmployeeID AND ET.TaskID = T.TaskID
GROUP BY E.EmployeeName
嘗試這個:
Select EmployeeName,
Count(et.TaskId) NumTasks,
Sum(T.Duration) TimeSpent
From Employees E
Left Join (EmployeeTasks eT Join Tasks T
On T.TaskId = eT.TaskId)
On eT.EmployeeId = E.EmployeeId
Where ProjectId = @ProjectId
Group By EmployeeName
這將適用於所有員工-項目組合
Select EmployeeName, ProjectId,
Count(et.TaskId) NumTasks,
Sum(T.Duration) TimeSpent
From Employees E
Left Join (EmployeeTasks eT Join Tasks T
On T.TaskId = eT.TaskId)
On eT.EmployeeId = E.EmployeeId
Group By EmployeeName, ProjectId
請注意,如果您需要為沒有任務的員工顯示時間,則這是不同的。
SELECT Count(TaskID) as NumOfTasks, Sum(Duration) as TimeSpent
FROM Employee
INNER JOIN EmployeeTasks on Employee.EmployeeID = Tasks.EmployeeID
INNER JOIN Tasks on EmployeeTasks.TaskID = Tasks.TaskID
WHERE ProjectID = @ProjectID
GROUP BY EmployeeID
如果您想要員工姓名,則可以將其作為子選擇加入
SELECT EmployeeName, NumOfTasks, TimeSpent
FROM Employees
INNER JOIN (insert select here) TaskSummary on Employees.EmployeeID = TaskSummary.EmployeeID
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.