create table SCORES
(
student VARCHAR2(10),
subject VARCHAR2(10),
score NUMBER(10)
)

表中数据:

张三 数学 70

王五 数学 80

张三 语文 100
李四 数学 20
王五 语文 50
李四 英语 90

 

方式一:
select student as 姓名,
max(case Subject when '语文' then Score else 0 end) as 语文,
max(case Subject when '数学' then Score else 0 end) as 数学,
max(case Subject when '英语' then Score else 0 end) as 英语
from scores
group by student;

 方式二:

/*
pivot(
  聚合函数(要转成列值的列名)
  for 要转换的列
  in(目标列名)
  )
*/

select * from scores
pivot (max(score) for subject in('语文','数学','英语'));

 

posted on 2017-07-17 14:23  为了八千块  阅读(198)  评论(0编辑  收藏  举报