SQL排序列按月计算

时间:2014-08-05 06:39:30

标签: mysql sql

我是SQL的新手

我的桌子看起来像这样:

Table1

User     Date      Amount
------- -------    ----------
David   5/1/2014    120
David   20/1/2014   300
James   13/1/2014   60
Albert  29/1/2014   300
David   9/2/2014    110
Albert  2/2/2014    90

如何编写SQL命令来生成如下结果:

User    January  February
------  ---      ------
Albert  300      90
David   420      110
James   60       0

谢谢。

1 个答案:

答案 0 :(得分:1)

试试这个:

select 
`user`,
sum(case when month(`date`) = 1 then amount else 0 end) january,
sum(case when month(`date`)= 2 then amount else 0 end) february
from tbl
group by `user`

快速解释 - 我们按用户名分组以获取每个用户的金额总和,计算总金额的总和函数和case以选择性地包括那些符合该列要求的记录,即1月列应该只有1月份的所有记录的总和,依此类推。

SQLFiddle