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