列转行-行列转换

有多种实现方式:
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 产品名称

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

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

你可能感兴趣的:(列转行-行列转换)