您的位置:首页 > 其它

列转行-行列转换

2013-01-06 09:56 211 查看
有多种实现方式:

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 产品名称

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

下次会谈一下行转列的问题.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: