我如何使用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