您的位置:首页 > 数据库 > Oracle

oracle 行转列应用

2016-07-17 12:10 357 查看
create table student(
sname varchar(20),
sub varchar(20),
score varchar(20)
);

insert into student values('王五','语文','80');
insert into student values('王五','数学','70');
insert into student values('王五','英语','50');
insert into student values('王五','物理','90');
insert into student values('王五','化学','65');
insert into student values('张三','语文','80');
insert into student values('张三','数学','70');
insert into student values('张三','英语','50');
insert into student values('张三','物理','90');
insert into student values('张三','化学','65');
insert into student values('李四','语文','80');
insert into student values('李四','数学','70');
insert into student values('李四','英语','50');
insert into student values('李四','物理','90');
insert into student values('李四','化学','65');

select sname,
subs,
REGEXP_SUBSTR(subs, '[^,]+', 1, 5, 'i') 语文,
REGEXP_SUBSTR(subs, '[^,]+', 1, 2, 'i') 数学,
REGEXP_SUBSTR(subs, '[^,]+', 1, 4, 'i') 英语,
REGEXP_SUBSTR(subs, '[^,]+', 1, 3, 'i') 物理,
REGEXP_SUBSTR(subs, '[^,]+', 1, 1, 'i') 化学
from (select sname, max(subs) subs
from (select sname,
wmsys.wm_concat(score) over(partition by sname order by sub) subs
from student) tabs
group by sname) tab
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: