列转行-行列转换

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

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

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

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