目录
1 概要
在Oracle中,对于查询结果有时需要进行行和列的倒置,如下图1和图2之间的相互转换:


本文将通过unpivot和pivot函数介绍这一转换过程。
2.1 列转行
通过unpivot将图1中的查询结果转换成图2的样式,其语法如下:
select * from 表名 unpivot (字段1 for 字段2 in (值1, 值2, 值3))
示例(图1->图2):
select col1, col2 from tb unpivot(col1 for col2 in(A, B, C))
2.2 行转列
通过pivot将图2中的查询结果转换成图1的样式,其语法如下:
select * from 表名 pivot(聚合字段 for 字段 in (值1, 值2, 值3))
示例(图2->图1):
select * from tb pivot(max(col1) for col2 in ('A' A, 'B' B , 'C' C))