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,使用它们可以很方便的实现行列转换。


数据运维技术 » Oracle中行列转换的方法(oracle行列转换)