列转行-行列转换

有多种实现方式:
wmsys.wm_concat函数
也可以用decode函数实现.
11g可以 使用pivot
存储过程实现

 

eg:

我现在的表如下:

产品名称    销售额  季度
奶酪          50     第一季度
奶酪          60     第二季度
啤酒          50     第二季度
啤酒          80     第四季度
。。。
。。。
想转换成如下格式
产品名称 第一季度销售额 第二季度销售额 第三季度销售额 第四季度销售额
奶酪          50               60           0              0
啤酒           0               50           0              80

 

答案:

01.最佳答案oracle下可以用函数decode处理: 
02. 
03.select 产品名称, 
04.sum(decode(季度,'第一季度',销售额,0)) 第一季度销售额, 
05.sum(decode(季度,'第二季度',销售额,0)) 第二季度销售额, 
06.sum(decode(季度,'第三季度',销售额,0)) 第三季度销售额, 
07.sum(decode(季度,'第四季度',销售额,0)) 第四季度销售额, 
08.from 表名  
09.group by 产品名称;

 

或者:

select 产品名称,  wmsys.wm_concat(第一季度销售额),wmsys.wm_concat(第二季度销售额),wmsys.wm_concat(第三季度销售额),wmsys.wm_concat(第四季度销售额) from test group by 产品名称

 其他方式大家自己去研究.

下次会谈一下行转列的问题.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值