行列转换

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('语文','数学','英语'));

原文地址:https://www.cnblogs.com/steel-chen/p/7194067.html