create table t(id number,name varchar2(10),subject varchar(10),score number(3));
insert into t values(1,'zs','语文',60);
insert into t values(1,'lisi','数学',70);
insert into t values(1,'wangwu','外语',80);
insert into t values(1,'zs','历史',90);
insert into t values(1,'lisi','英语',100);
insert into t values(1,'wangwu','语文',90);
insert into t values(1,'mh','语文',60);
select * from t
select name,
nvl(max(decode(subject,'语文',score)),0)语文,
nvl(max(decode(subject,'数学',score)),0)数学,
nvl(max(decode(subject,'外语',score)),0)外语,
nvl(max(decode(subject,'历史',score)),0)历史
from t group by name