初始化数据:
组名 分数 得分项
开发一组 100 1
开发二组 90 1
开发三组 60 1
开发四组 80 1
开发一组 60 2
开发二组 70 2
开发三组 50 2
开发四组 80 2
需要得到:
开发一组 开发二组 开发三组 开发四组
1 100 90 60 80
2 60 70 50 80
drop table test purge;
create table test(name varchar2(20),score number,course_id number);
insert into test values('开发一组',100,1);
insert into test values('开发二组',90,1);
insert into test values('开发三组',60,1);
insert into test values('开发四组',80,1);
insert into test values('开发一组',2);
insert into test values('开发二组',70,2);
insert into test values('开发三组',50,2);
insert into test values('开发四组',2);
commit;
select * from test;
NAME SCORE COURSE_ID
-------------------- ---------- ----------
开发一组 100 1
开发二组 90 1
开发三组 60 1
开发四组 80 1
开发一组 60 2
开发二组 70 2
开发三组 50 2
开发四组 80 2
select course_id,
max(case when name ='开发一组' then score else null end) 开发一组,
max(case when name ='开发二组' then score else null end) 开发二组,
max(case when name ='开发三组' then score else null end) 开发三组,
max(case when name ='开发四组' then score else null end) 开发四组
from test
group by course_id;
COURSE_ID 开发一组 开发二组 开发三组 开发四组 ---------- ---------- ---------- ---------- ---------- 1 100 90 60 80 2 60 70 50 80