oracle 行轉列應用

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章