Oracle行转列与列转行

2015-11-12 21:29:03 · 作者: · 浏览: 8

一、行转列


  在有些应用场景中,如学生成绩。学生所有科目的成绩都保存到一张表里面,当我们需要以列表的形式显示出学生所对应的每一科目的成绩的时候,需要使用到行转列。


  示例


  行转列语句


  因为这里使用到了 group by t.name,所以对于要展示score只能使用聚合函数(sum,max,min)都可以,如果不使用聚合函数就会报错。


  执行结果如下:


  


二、列转行


  与行转列相反,有些场景刚好需要这种操作。


  示例如下:?


   列传行语句


  结果如下:


  


  也可以使用insert all .. into完成。使用insert all ..。 into 需要新建一个表用来保存转换后的数据。


  表结构如下:


  执行语句如下:


  结果查询与上面截图一致。