我如何使用SQL和SUM月度数据(季度视图)?我将不使用存储过程等季度销售额总和
Current data:
ID | Sales
201601 | 5
201602 | 15
201603 | 5
201604 | 20
201605 | 8
201606 | 2
...
我的ID列是像YYYYMM
我要的是:
Quarter | Sales
Q1 | 25
Q2 | 30
....
我如何使用SQL和SUM月度数据(季度视图)?我将不使用存储过程等季度销售额总和
Current data:
ID | Sales
201601 | 5
201602 | 15
201603 | 5
201604 | 20
201605 | 8
201606 | 2
...
我的ID列是像YYYYMM
我要的是:
Quarter | Sales
Q1 | 25
Q2 | 30
....
你可以尝试像查询低于
SELECT
LEFT(ID,4) Year,
'Q'+ CAST((CAST(RIGHT(ID,2) AS INT)-1)/3 +1 AS varchar) Quarter,
SUM(Sales) Sales
FROM
Yourtable
GROUP BY
LEFT(ID,4),
'Q'+ CAST((CAST(RIGHT(ID,2) AS INT) -1)/3 +1 AS varchar)
order by year
谢谢。请检查示例SQL [link](http://sqlfiddle.com/#!6/3b5ba/1)计算不正确。你知道为什么吗? –
回答更新!谢谢你指出我们的计算错误。查看更新后的链接http://sqlfiddle.com/#!6/3b5ba/6 – DhruvJoshi
您可以使用DATEPART
和QUARTER
得到DATETIME
的四分之一。您只需使用DATEFROMPARTS
构建DATETIME
并解析您的ID列。
CONCAT
只是将“Q”添加到期间编号。
SELECT LEFT(id,4) [Year],
CONCAT('Q',DATEPART(QUARTER, DATEFROMPARTS(LEFT(id,4), RIGHT(id, 2), 1))) [Quarter],
SUM(Sales) [Sales]
FROM yourtable
GROUP BY LEFT(id,4), DATEPART(q, DATEFROMPARTS(LEFT(id,4), RIGHT(id, 2), 1))
ORDER BY [Year], [Quarter]
目前计算已经结束了所有年份。示例[SQL](http://sqlfiddle.com/#!6/3b5ba/3)我怎样才能修改这只获得每年的四分之一? –
将年份'LEFT(ID,4)'添加到您的选择和分组依据。 http://sqlfiddle.com/#!6/3b5ba/9 – JamieD77
请确认我的答案。如果您发现它有用,请接受它并/或向上提供它,以便将来有类似问题的搜索者发现它有用。 [https://stackoverflow.com/help/someone-answers] – DhruvJoshi