我需要選擇每週報告(每個任務類型每週的收入)。對於某些任務類型沒有條目的幾周,我想將0打印爲收入,但這些組不顯示在我的選擇中。 #weeks是包含我想要報告的所有星期的臨時表。我應該在查詢中修改什麼?如何顯示總和0,哪裏沒有某些值的條目?
SELECT weeks.BeginDate, weeks.EndDate, task.TaskId, task.Abbreviation, task.Name, COALESCE(SUM([entry.Income]), 0) AS IncomePerWeek
FROM Task task
LEFT JOIN Entry entry
ON task.TaskId = entry.TaskId
INNER JOIN #weeks weeks
ON entry.EntryDate BETWEEN weeks.BeginDate
AND weeks.EndDate
GROUP BY weeks.BeginDate, weeks.EndDate, task.TaskId, task.Abbreviation, task.Name
ORDER BY weeks.BeginDate, task.Abbreviation
所以我想結果是這樣的:
BeginDate EndDate TaskId Abbreviation Name IncomePerWeek
----------------------------------------------------------------------
09/11/2015 15/11/2015 1 FT First 15
09/11/2015 15/11/2015 2 ST Second 0
...
所以,在2015年9月11日一週 - 15/11/2015有與任務id 2表條目沒有任何條目,但我仍然想要獲得那一週的排名,並且IncomePerWeek = 0。
做另一個LEFT JOIN而不是INNER JOIN? – jarlh
不同之處在於,現在我們每週都會得到一行(至少有一個失蹤的TaskId),如下所示: 09/11/2015 15/11/2015 NULL NULL NULL NULL, 但我希望獲得周的交叉連接以及總和爲0的任務,其中本週和任務沒有任何條目。 – bambi
不知道如果我明白:你想每週看到所有的任務?每個人都有條目的總數,如果沒有條目存在,那麼每個人都是0? –