SQL查询获取相同的结果集

时间:2013-11-13 14:48:40

标签: sql join

这应该是一个简单的,但是我说有一个包含这样数据的表:

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

1 个答案:

答案 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。