让我们考虑下面的表结构
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/