2017-06-06 59 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()現在它工作正常謝謝 –