1

这应该是一个简单的,但是假设我有一个包含如下数据的表:

|    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 图表)我的查询给我的只是数据库中实际存在的周。

4

1 回答 1

2

使用 SQL,您不能返回某些表中不存在的行。为了获得您想要的效果,您可以创建一个名为的表WeeksInYear,其中只有一个字段WeekNumberInt. 用所有周数填充表。然后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。

于 2013-11-13T14:51:51.917 回答