Mysql之行转列(替代Pivot函数)

Mysql之行转列(替代Pivot函数)

此前一直使用的Oracle数据库有pivot函数,很方便就能实现行转列的操作。当我切换到Mysql数据库后发现Mysql并不支持pivot函数,所以只能想其他方法来替代。以下是实现方法。
首先准备一张测试用表:

image.png

我们想得到每个供应商的每天的总收入,使用以下语句即可实现:

select VendorId ,
sum(case when  IncomeDay='MoN' then IncomeAmount else 0 end) MON,
sum(case when  IncomeDay='TUE' then IncomeAmount else 0 end) TUE,
sum(case when  IncomeDay='WED' then IncomeAmount else 0 end) WED,
sum(case when  IncomeDay='THU' then IncomeAmount else 0 end) THU,
sum(case when  IncomeDay='FRI' then IncomeAmount else 0 end) FRI,
sum(case when  IncomeDay='SAT' then IncomeAmount else 0 end) SAT,
sum(case when  IncomeDay='SUN' then IncomeAmount else 0 end) SUN
from DailyIncome group by VendorId

得到如下的结果:

image.png

完成!

Copyright: 采用 知识共享署名4.0 国际许可协议进行许可

Links: https://www.keikei.vip/archives/mysql之行转列替代pivot函数