2012-01-22 24 views
0

私は購入のための取引テーブルを持っています。各取引には、タイムスタンプと購入金額(USD単位)があります。MYSQL - 毎月の行を取得し、各月の合計を取得します

これからいくつかの統計を作成しようとしています。私は年の各月の合計を含む各年の行を抽出したいと思います。 (私はトランザクションを持たない月に0を加算してください - 省略しないでください)

私はすべてのプレーンなSELECTを実行してPHPで処理することができますが、 MySQLが仕事をして、私が望むようにデータを抽出するようにしますか?私が見てみたいと思い何

のような行です:

Year, Total_Jan, Total_Feb, ... Total_Dec, Total_Year

私は年間合計を取得することができるが、私はに月額の合計を取得する方法を考え出すことはできません同じ行

SELECT 
    YEAR(dt) as the_year, 
    SUM(mc_gross) AS sum_total 
FROM 
    transactions 
GROUP BY 
    the_year 

答えて

5
SELECT 
    YEAR(dt) as the_year, 
    SUM(CASE WHEN MONTH(dt) = 1 THEN mc_gross ELSE 0 END) AS Total_Jan, 
    SUM(CASE WHEN MONTH(dt) = 2 THEN mc_gross ELSE 0 END) AS Total_Feb, 
    ... 
    SUM(CASE WHEN MONTH(dt) = 12 THEN mc_gross ELSE 0 END) AS Total_Dec 
FROM 
    transactions 
GROUP BY 
    the_year; 
+1

パーフェクト!どうもありがとうございました。 – thomthom

関連する問題