Oracle中行列转换的方法(oracle行列转换)
Oracle数据库中行转列与列转行是一种常见的数据操作,即将数据转换成按行排列或按列排列的格式。其中行转列是将每一行的数据按照指定的列名转化为每一列的格式,而列转行则是将每一列的数据按照指定行名转换成每一行的格式,以下将详细介绍Oracle数据库中行列转换的方法。
1、行转列
Oracle中行转列最常用的就是使用PIVOT功能,其用法及实现如下:
— 定义源数据
create table student ( id int, name varchar2(20), course varchar2(20), score number);
— 添加源数据
insert into student values(1, ‘Tom’, ‘Chinese’, 92);
insert into student values(1, ‘Tom’, ‘English’, 92);
insert into student values(1, ‘Tom’, ‘Math’, 92);
insert into student values(2, ‘John’, ‘Chinese’, 92);
insert into student values(2, ‘John’, ‘English’, 92);
insert into student values(2, ‘John’, ‘Math’, 92);
— 使用PIVOT转换数据
select *
from student
pivot (
sum(score)
for course in (‘Chinese’ as Chinese, ‘English’ as English, ‘Math’ as Math)
);
2、列转行
在Oracle中列转行也是一种常用的操作,它可以将按列排列的数据转换为按行排列的数据形式,最常用的方法就是使用Unpivot,下面给出的是使用Unpiviot实现列转行的实现方法:
— 定义源表
create table student (
id int,
“Chinese” number,
“English” number,
“Math” number);
— 添加源数据
insert into student values(1, 92, 92, 92);
insert into student values(2, 92, 92, 92);
— 使用Unpivot转换数据
select id, course, “score”
from student
unpivot (
“score” for course in (“Chinese” as “Chinese”, “English” as “English”, “Math” as “Math”)
);
以上就介绍了Oracle中行列转换的方法,常用的主要有Pivot和Unpivot,使用它们可以很方便的实现行列转换。