这应该是一个简单的,但是我说有一个包含这样数据的表:
| ID | Date | Value |
| 1 | 01/01/2013 | 40 |
| 2 | 03/01/2013 | 20 |
| 3 | 10/01/2013 | 30 |
| 4 | 14/02/2013 | 60 |
| 5 | 15/03/2013 | 10 |
| 6 | 27/03/2013 | 70 |
| 7 | 01/04/2013 | 60 |
| 8 | 01/06/2013 | 20 |
我想要的是一年中每周价值的总和,显示所有周......(用于excel图表) 我的查询给出的只是数据库中实际存在的几周。
答案 0 :(得分:2)
使用SQL,您无法返回某些表中不存在的行。为了获得您想要的效果,您可以创建一个名为WeeksInYear
的表,其中只有一个WeekNumber
字段Int
。使用所有周数填充表格。然后JOIN
该表到这一个。
然后查询类似于以下内容:
SELECT w.WeekNumber, SUM(m.Value)
FROM MyTable as m
RIGHT OUTER JOIN WeeksInYear AS w
ON DATEPART(wk, m.date) = w.WeekNumber
GROUP BY w.WeekNumber
缺少的周数将在MyTable中没有任何数据并显示为0。