oracle实现数据的行列转换

一.oracle实现行数据转换成列数据

利用PIVOT()函数实现

SELECT * FROM (数据查询集)PIVOT 

(

 SUM(Score/*行转列后 列的值*/) FOR

 coursename/*需要行转列的列*/ IN (转换后列的值)

)
//例子
select * from  (select c.stuname,

       b.coursename,

       t.score

  from STUDENT.SCORE t, student.course b, student.stuinfo c

 where t.courseid = b.courseid

   and t.stuid = c.stuid )  /*数据源*/PIVOT 

(

 SUM(score/*行转列后 列的值*/) 

 FOR coursename/*需要行转列的列*/ IN ('英语(2018上学期)' as 英语,'数学(2018上学期)' as 数学,'语文(2018上学期)' as 语文 )

) ;

 

二.oracle实现列数据转换成行数据

利用UNPIVOT()函数实现

select 字段 from 数据集

unpivot(自定义列名/*列的值*/ for 自定义列名 in(列名))
//例子
select stuname, coursename ,score from

score_copy  t

unpivot

(score for coursename in (英语,数学,语文))

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值