oracle 11g行转列 列转行

行转列:

SELECT *   
FROM   src_table   
UNPIVOT (param_value FOR param_name IN (product_color AS 'product_color', product_type AS 'product_type', is_intelligent AS 'is_intelligent'));

 

列转换:

 select *  from (

select flow,xx from tab

)   a pivot (max(value) for enname in ( 'flow' flow ,'xx')) b order by id ";

 

 

我自己的测试

注意:建表插入的时候varchar字符型必须要加上'',

 insert into s1 values('yuan','english',80);

 

SELECT  * FROM  s1
PIVOT ( MAX (score) for  subject IN ( 'chinese'   chinese , 'math'   math  , 'english'   english ) )

注意这里max的是分数,in的是subject  

 返回来

 

  SELECT * FROM 
( SELECT * FROM s1 PIVOT ( MAX(score) for subject IN( 'chinese' chinese , 'math' math , 'english' english ) ) ) UNPIVOT ( score FOR subject IN ( chinese , math , english ) )

 

注意这里 最后一句的in chinese 之类,chinese不需要加''

转载于:https://www.cnblogs.com/lj821022/p/5029208.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值