需要 SQL:按月份对值求和

19

我有一个包含如下数值的表格:

count1   count2  count3  month
12        1       4       01/12/2011
6         5       4       23/12/2011
14        6       9       11/06/2011
8         5       4       19/06/2011

我该如何获得以下结果?

count1   count2  count3  month
18        6       8       12
22        11      13      06

这里的鉴别器是什么? 第一组结果和第二组的区别是什么,是月份列还是其他什么东西? - Subhash Dike
请举一个与第一张表相关的结果表的例子,以便任何人都可以轻松理解您的需求。 - Sai Kalyan Kumar Akshinthala
4个回答

33
SELECT SUM(count1), SUM(count2), SUM(count3), MONTH(month)
  FROM myTable
 GROUP BY MONTH(month)

由于MONTH是SQL Server关键字,如果你的日期列真的叫这个名字,你可能需要转义列名month(例如[month])。 (感谢Endy的评论!)

另外,如果选择的数据跨越了一年以上,你可能还需要按年进行分组:

SELECT SUM(count1), SUM(count2), SUM(count3), MONTH(month)<b>, YEAR(month)</b>
  FROM myTable
 GROUP BY MONTH(month)<b>, YEAR(month)</b>

3
你可能希望将那个列名转义为[month]。 - Endy Tjahjono

2
减轻查询负担
SELECT SUM(count1), SUM(count2), SUM(count3), substring(month,4,2)   
FROM myTable  
GROUP BY substring(month,4,2)

0
SELECT
SUM(count1) as sum_count1,
to_char(month, 'yyyy-MM') as month
FROM
dataframe 
GROUP BY
month

0
SELECT SUM(count1), SUM(count2), SUM(count3), MONTH(month)   
FROM Table  
GROUP BY trunc(month,'mm')

这将在PL/SQL开发者中运行 :)


1
但它在SQL Server上无法运行,而他正在使用这个(至少根据标签来看)。 - Mikael Östberg
亚,迈克..也许不会.. :) - Avi
但是每天接受 PL/SQL 的日常剂量总是很不错的,谢谢! - Mikael Östberg

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接