2012-01-22 99 views
0

我有一个购买交易表。每笔交易都有一个时间戳和购买金额(美元)。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