Oracle 行转列两种方法

Posted 江湖萤火虫

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Oracle 行转列两种方法相关的知识,希望对你有一定的参考价值。

1.新建一个名为TEST表

2.向TEST表中添加数据

INSERT INTO TEST(STUDENT,COURSE,SCORE)
select ‘张三‘,‘语文‘,78 from dual union
select ‘张三‘,‘数学‘,87 from dual union 
select ‘张三‘,‘英语‘,82 from dual union
select ‘张三‘,‘物理‘,90 from dual union
select ‘李四‘,‘语文‘,65 from dual union
select ‘李四‘,‘数学‘,77 from dual union
select ‘李四‘,‘英语‘,65 from dual union
select ‘李四‘,‘物理‘,85 from dual

表数据如下:

技术分享图片

3.列转行

方法··1:

select 
    Student,
    sum(decode(Course, ‘数学‘, Score)) 数学,
    sum(decode(Course, ‘物理‘, Score)) 物理,
    sum(decode(Course, ‘英语‘, Score)) 英语,
    sum(decode(Course, ‘语文‘, Score)) 语文
from 
    TEST 
group by Student

方法··2:

select
    Student,
    sum(case Course when ‘数学‘ then Score else null end) 数学,
    sum(case Course when ‘物理‘ then Score else null end) 物理,
    sum(case Course when ‘英语‘ then Score else null end) 英语,
    sum(case Course when ‘语文‘ then Score else null end) 语文
from 
    TEST 
group by Student

效果如下:

技术分享图片

注:sum是求和的意思;比如说里面记录里面有两条张三,列转行显示的结果就会是两个张三的结果之和。

 

来自:https://blog.csdn.net/rlhua/article/details/24668755

























以上是关于Oracle 行转列两种方法的主要内容,如果未能解决你的问题,请参考以下文章

oracle 使用pivot 函数进行批量数据的动态行转列

oracle行转列sql怎么写?

oracle行转列sql怎么写?

Hive 行转列 & 列转行

【求助】有关oracle 动态行转列

Oracle列转行,行转列