SQL查询进行聚合

标签 sql sql-server group-by aggregation

让我们考虑下面的表结构

Product    Year   Month Price

A         2011      01   23

A         2011      02   34

......

......

A       2011      12    54   
B       2011      01   13

B       2011      02   12

......

......

2011年12月20日

从这张表中,我需要每 3 个月汇总一次值(value),即......,

Product        Year          Month              Price

A              2011          1-3                45

A              2011          4-6                23

A              2011          7-9                45

A              2011          10-12              16

2012年1-3月12日 ………… ......

谁能告诉我如何使用 sql 查询进行此计算... 提前致谢!!!

最佳答案

试试这个。使用 Case 语句 将月份按季度分组,然后找到价格总和

SELECT product,
       [year],
       CASE
         WHEN ( [month] ) IN( '01', '02', '03' ) THEN '1-3'
         WHEN ( [month] ) IN( '04', '05', '06' ) THEN '4-6'
         WHEN ( [month] ) IN( '07', '08', '09' ) THEN '7-9'
         WHEN ( [month] ) IN( '10', '11', '12' ) THEN '10-12'
       END [Month],
       Sum(Price)
FROM   tablename
GROUP  BY product,
          [year],
          CASE
            WHEN ( [month] ) IN( '01', '02', '03' ) THEN '1-3'
            WHEN ( [month] ) IN( '04', '05', '06' ) THEN '4-6'
            WHEN ( [month] ) IN( '07', '08', '09' ) THEN '7-9'
            WHEN ( [month] ) IN( '10', '11', '12' ) THEN '10-12'
          END 

注意:通过查看您的数据,它看起来像是varchar列,但您可以将其更改为 TINYINT

关于SQL查询进行聚合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27222857/

相关文章:

sql - COPY 命令 postgres 语法错误

sql - Oracle sqlplus : relative paths starting at position of script

mysql - LEFT JOIN 与 GROUP BY 返回意外结果

mysql 跨表和分组的列求和

mysql - 为什么聚合函数不起作用,除非使用 GROUP BY 语句?

java - 如何将具有设置值的不同 MySQL 查询合并为 Java 中的单个查询?

C# Property get set 不设置值

sql-server - SQL Server 2008磁盘使用问题

sql - 连接两个查询/分割查询

sql-server - 在 T-SQL 中查询之前将字符串转换为 XML 数据类型