一.oracle实现行数据转换成列数据
利用PIVOT()函数实现
SELECT * FROM (数据查询集)PIVOT
(
SUM(Score/*行转列后 列的值*/) FOR
coursename/*需要行转列的列*/ IN (转换后列的值)
)
//例子
select * from (select c.stuname,
b.coursename,
t.score
from STUDENT.SCORE t, student.course b, student.stuinfo c
where t.courseid = b.courseid
and t.stuid = c.stuid ) /*数据源*/PIVOT
(
SUM(score/*行转列后 列的值*/)
FOR coursename/*需要行转列的列*/ IN ('英语(2018上学期)' as 英语,'数学(2018上学期)' as 数学,'语文(2018上学期)' as 语文 )
) ;
二.oracle实现列数据转换成行数据
利用UNPIVOT()函数实现
select 字段 from 数据集
unpivot(自定义列名/*列的值*/ for 自定义列名 in(列名))
//例子
select stuname, coursename ,score from
score_copy t
unpivot
(score for coursename in (英语,数学,语文))