oracle行转列

对列转行,行转列一直不太理解,写个demo记下

现有一个需求,我想统计出每月中各个产品的销量,需要展示的结果是这样的
alt
而数据库里的表却是这种

select * from tb_order

在这里插入图片描述
显然不能满足需求,这时候就需要行转列了
先把tb_order每一条数据用decode函数处理

select t.yf,decode(t.cp,'苹果',t.sl) 苹果销量,decode(t.cp,'橘子',t.sl) 橘子销量,
decode(t.cp,'香蕉',t.sl) 香蕉销量 from tb_order t 

得到这样的结果
在这里插入图片描述
然后对它进行分组,合并相同的月份。而分组需要各个字段的值相同或唯一,这时候我们需要取表中的有效值用max处理

select t.yf ,max(decode(t.cp,'苹果',t.sl)) 苹果销量,max(decode(t.cp,'橘子',t.sl)) 
橘子销量,max(decode(t.cp,'香蕉',t.sl)) 香蕉销量 from tb_order t group by t.yf 

最后得到结果
alt

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值