2017-06-06 64 views
1

我在mysql数据库中的以下表使用MySQL查询

enter image description here

我想要得到的结果在下面的格式 enter image description here

+0

客户名称是唯一字段吗? –

+0

没有客户名称是不唯一的 –

回答

1

您可以使用此查询:

select 
    customerName, 
    coalesce(sum(case when month(`date`) = 1 then paidamount end), '-') as `January` , 
    coalesce(sum(case when month(`date`) = 2 then paidamount end), '-') as `February`, 
    coalesce(sum(case when month(`date`) = 3 then paidamount end), '-') as `March`, 
    coalesce(sum(case when month(`date`) = 4 then paidamount end), '-') as `April`, 
    coalesce(sum(case when month(`date`) = 5 then paidamount end), '-') as `May`, 
    coalesce(sum(case when month(`date`) = 6 then paidamount end), '-') as `June`, 
    coalesce(sum(case when month(`date`) = 7 then paidamount end), '-') as `July`, 
    coalesce(sum(case when month(`date`) = 8 then paidamount end), '-') as `August`, 
    coalesce(sum(case when month(`date`) = 9 then paidamount end), '-') as `September`, 
    coalesce(sum(case when month(`date`) = 10 then paidamount end), '-') as `October`, 
    coalesce(sum(case when month(`date`) = 11 then paidamount end), '-') as `November`, 
    coalesce(sum(case when month(`date`) = 12 then paidamount end), '-') as `December` 
from test 
group by customerName 
1

这是一个典型的表改变MySQL表的格式请点击以下链接:

select 
    customerName, 
    coalesce(max(case when month(`date`) = 1 then paidamount end), '-') as `January` , 
    coalesce(max(case when month(`date`) = 2 then paidamount end), '-') as `February`, 
    coalesce(max(case when month(`date`) = 3 then paidamount end), '-') as `March`, 
    coalesce(max(case when month(`date`) = 4 then paidamount end), '-') as `April`, 
    coalesce(max(case when month(`date`) = 5 then paidamount end), '-') as `May`, 
    coalesce(max(case when month(`date`) = 6 then paidamount end), '-') as `June`, 
    coalesce(max(case when month(`date`) = 7 then paidamount end), '-') as `July`, 
    coalesce(max(case when month(`date`) = 8 then paidamount end), '-') as `August`, 
    coalesce(max(case when month(`date`) = 9 then paidamount end), '-') as `September`, 
    coalesce(max(case when month(`date`) = 10 then paidamount end), '-') as `October`, 
    coalesce(max(case when month(`date`) = 11 then paidamount end), '-') as `November`, 
    coalesce(max(case when month(`date`) = 12 then paidamount end), '-') as `December` 
from yourtable 
group by customerName 
+0

其不给予每月支付金额的总和 –

+0

我使用sum()代替max()现在它工作正常谢谢 –