MYSQL - 每年获得一行,每个月的总和

时间:2012-01-22 11:38:16

标签: mysql

我有一张购买交易表。每笔交易都有一个时间戳和购买金额(以美元计)。

我正在尝试从中创建一些统计数据。我想每年提取一行,其中包含一年中每个月的总和。 (我想几个月没有交易总和为0 - 没有省略。)

我知道我可以对PHP进行简单的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

1 个答案:

答案 0 :(得分:6)

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;