2016-04-07 163 views
2

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

.... 
+0

請確認我的答案。如果您發現它有用,請接受它並/或向上提供它,以便將來有類似問題的搜索者發現它有用。 [https://stackoverflow.com/help/someone-answers] – DhruvJoshi

回答

0

你可以嘗試像查詢低於

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 demo link

+0

謝謝。請檢查示例SQL [link](http://sqlfiddle.com/#!6/3b5ba/1)計算不正確。你知道爲什麼嗎? –

+0

回答更新!謝謝你指出我們的計算錯誤。查看更新後的鏈接http://sqlfiddle.com/#!6/3b5ba/6 – DhruvJoshi

0

您可以使用DATEPARTQUARTER得到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] 
+0

目前計算已經結束了所有年份。示例[SQL](http://sqlfiddle.com/#!6/3b5ba/3)我怎樣才能修改這隻獲得每年的四分之一? –

+0

將年份'LEFT(ID,4)'添加到您的選擇和分組依據。 http://sqlfiddle.com/#!6/3b5ba/9 – JamieD77