mysql 1对多 转为一行_sql中一对多关系的查询结果的多行转换成一行多列

展开全部

1、创建测试表,

create table test_fee(userid number, feeid number, fee number);

c6a5706863158bec8c5fe0534c59c141.png

2、插入测试数据

insert into test_fee values(1,1001,80);

insert into test_fee values(1,1002,70);

insert into test_fee values(1,1003,90);

insert into test_fee values(1,1004,60);

insert into test_fee values(2,1001,99);

insert into test_fee values(2,1002,66);

insert into test_fee values(2,1001,55);

89fd1498b6f6499d95243dea13d99e14.png

3、查询表中所有记录,select t.*, rowid from test_fee t,

174d753d6dabc1595fa4bdb3f4e20435.png

4、编写sql,按userid汇总,根据不同32313133353236313431303231363533e4b893e5b19e31333431373862的feeid,进行行转列汇总,

select userid,

sum(case when feeid = 1001 then fee else 0 end) as fee_1001,

sum(case when feeid = 1002 then fee else 0 end) as fee_1002,

sum(case when feeid = 1003 then fee else 0 end) as fee_1003,

sum(case when feeid = 1004 then fee else 0 end) as fee_1004

from test_fee t

group by userid

8b95d91e75576d896af882c4ae2830ed.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值