Oracle行列互换 横表和纵表

tb_score表 

转换成:

SQL实现代码:

create table tb_score
(
       stu_id int,
       stu_name varchar2(20),
       stu_object varchar2(10),
       stu_score number(6,2)
)
go
select * from tb_score;
go
insert into tb_score values(1,'andy','Chinese',80);
insert into tb_score values(1,'andy','Math',70.05);
insert into tb_score values(1,'andy','English',90);
insert into tb_score values(2,'DK','Chinese',80.05);
insert into tb_score values(2,'DK','Math',73.05);
insert into tb_score values(2,'DK','English',99);
go

select stu_id,stu_name,sum(decode(stu_object,'Chinese',stu_score)) 语文,
                         sum(decode(stu_object,'Math',stu_score)) 数学,
                         sum(decode(stu_object,'English',stu_score)) 英语 from tb_score 
                         group by stu_id,stu_name;
select stu_id,stu_name,sum(case stu_object when 'Chinese' then stu_score end) 语文, 
                         sum(case stu_object when 'Math' then stu_score end) 数学, 
                         sum(case stu_object when 'English' then stu_score end) 英语 from tb_score
                         group by stu_id,stu_name;
                                                

上面两种方式都可以,

如果有什么好的方式,欢迎大家给我提意见微笑

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值