Oracle行列转换小结

目录结构如下:

  • 行转列
  • 列转行

[一]、行转列

1.1、初始测试数据

表结构:TEST_TB_GRADE

初始数据如下图:

1.2、 如果需要实现如下的查询效果图:

这就是最常见的行转列,主要原理是利用decode函数、聚集函数(sum),结合group by分组实现的,具体的sql如下:

1.3、延伸

如果要实现对各门功课的不同分数段进行统计,效果图如下:

具体的实现sql如下:

[二]、列转行

2.1、初始测试数据

表结构:TEST_TB_GRADE2

初始数据如下图:

2.2、 如果需要实现如下的查询效果图:

这就是最常见的列转行,主要原理是利用SQL里面的union,具体的sql语句如下:

也可以利用【 insert all into … select 】来实现,首先需要先建一个表TEST_TB_GRADE3:

再执行下面的sql:

别忘记commit操作,然后再查询TEST_TB_GRADE3,发现表中的数据就是列转成行了。

原创文章,转载请注明: 转载自micmiu – 软件开发+生活点滴[ http://www.micmiu.com/ ]

本文链接地址: http://www.micmiu.com/db/oracle-db/oracle-row-col-exchange/

发表评论?

0 条评论。

发表评论


注意 - 你可以用以下 HTML tags and attributes:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">