偉大的sql專家! :) 我的老闆希望每月/每年/每天的員工工作報告。我想到了大部分我需要的SQL查詢,但最後一個超出了我的理解範圍。SQL多語言查詢與兩個sum語句
我有幾個表格:人員,服務,計劃和ProvidedServices。表格計劃包含每個服務上每個人的個人月計劃。所以我需要一個查詢,它返回每個人在特定服務的特定時間段提供的服務的總價值以及同一服務上同一時期計劃工作量的彙總值。現在我有這樣的事情:
SELECT SUM(BoRRenderedServices.ServiceCount),
BoREmployee.Name,
BoRServices.Service,
SUM(BoRTargets.Amount)
FROM BoRRenderedServices, BoREmployee, BoRServices, BoRTargets
WHERE (BoRTargets.EmployeeID = BoREmployee.ID)
AND (BoRTargets.ServiceID = BoRServices.ID)
AND (BoRRenderedServices.Date BETWEEN '2014-1-1' AND '2014-9-19')
AND (BoREmployee.DepartmentID = 'cc42cac9-5ac7-4614-9b7b-ef931a9a132b')
AND (BoRRenderedServices.EmployeeID = BoREmployee.ID)
AND (BoRRenderedServices.ServiceID = BoRServices.ID)
AND (BoRRenderedServices.ServiceID = '0fbf68bf-ace8-4ecb-ba07-7049046c0215')
GROUP BY BoREmployee.Name,
BoRServices.Service
但此查詢使雙總和,它總結了所提供的服務數量的兩倍,這同樣適用於計劃。我的意思是,每次它發現爲WHERE條件提供服務時 - 它也總結計劃,而不是僅將提供的服務添加到第一個sum語句中。
人1,8月1日3次提供服務1次,8月3日1次,7月4日4次。 Person1八月份的計劃是三次,七月份是四次。
所需的輸出:
--------------Plan Fact Service1 1----------1 Service2 1----------2 Service3 1----------3
實際輸出:
--------------Plan Fact Service1 3----------3 Service2 3----------6 Service3 3----------9
你能後的實際數據和期望的輸出?你有什麼樣的DB,MySQL,SQL-Server,Oracle,什麼版本?您還可以在[sqlfiddle](http://sqlfiddle.com/)上發佈示例 – Max 2014-09-19 08:05:29
舊學校JOIN已經破舊大約20年了,請使用JOIN關鍵字。 – HoneyBadger 2014-09-19 08:16:33
在sqlfiddle.com上提供一個示例 – Max 2014-09-26 10:14:32