[一]、行转列
1.1、初始测试数据
表结构:TEST_TB_GRADE
初始数据如下图:
1.2、 如果需要实现如下的查询效果图:
这就是最常见的行转列,主要原理是利用decode函数、聚集函数(sum),结合group by分组实现的,具体的sql如下:
1.3、延伸
如果要实现对各门功课的不同分数段进行统计,效果图如下:
具体的实现sql如下:
[二]、列转行
1.1、初始测试数据
表结构:TEST_TB_GRADE2
初始数据如下图:
1.2、 如果需要实现如下的查询效果图:
这就是最常见的列转行,主要原理是利用SQL里面的union,具体的sql语句如下:
也可以利用【 insert all into ... select 】来实现,首先需要先建一个表TEST_TB_GRADE3:
再执行下面的sql:
别忘记commit操作,然后再查询TEST_TB_GRADE3,发现表中的数据就是列转成行了。
from:http://sjsky.iteye.com/blog/1152167