我是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
谢谢。
答案 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月份的所有记录的总和,依此类推。