1. 程式人生 > >一起做面試題--用SQL進行行轉列

一起做面試題--用SQL進行行轉列

需求就是:

有這樣一張表:至少三個欄位:名稱、支付方式、金額。要求統計出查詢出的結果集包含兩列,第一列是名稱,第二列是每種支付方式金額總和,第二列要分別列出所有支付方式的支付總和。結果集示例如下:


思路就是先用group by查詢出每個人每種支付方式的彙總分組記錄,然後用行轉列函式處理,方法不唯一,本人的僅供參考。

select k.name,group_concat(k.pay_type,':',k.sum) as expr from (select name,pay_type,sum(amount) as sum from payment group by name,pay_type) k group by k.name