ORACLE行列转换
1. pivot函数:行转列函数
说明:pivot(聚合函数 for 转换列的值所在列名 in (转为列名的值));
2 .unpivot函数:列转行函数
说明:unpivot(新增列对应值的列名 for 新增列转为行后所在 列的列名 in(需转为行的列名));
1.oracle的pivot函数
行转列函数,转换前

执行如下语句:
sql
with temp as
(select '英语' 科目, '小毛' 学生, '第一' 排名
from dual
union all
select '英语' 科目, '小红' 学生, '第二' 排名
from dual
union all
select '英语' 科目, '小明' 学生, '第三' 排名
from dual
union all
select '生物' 科目, '小志' 学生, '第四' 排名
from dual
union all
select '生物' 科目, '小李子' 学生, '第一' 排名
from dual
union all
select '生物' 科目, '小花花' 学生, '第二' 排名
from dual
union all
select '生物' 科目, '小芝麻' 学生, '第三' 排名
from dual)
select *
from (select 科目, 学生, 排名
from temp)pivot(max(学生) for 排名 in ('第一' as 第一,
'第二' AS 第二,
'第三' AS 第三,
'第四' AS 第四));
执行完成后

2.oracle的unpivot函数
列转行函数,转换前

执行如下语句:
with temp as
(select '英语' 科目, '小毛' 第一, '小志' 第二, '小红' 第三, '小明' 第四
from dual
union all
select '生物' 科目,
'小李子' 第一,
'小红' 第二,
'小芝麻' 第三,
'小花花' 第四
from dual)
select 科目, 学生, 排名
from temp unpivot(学生 for 排名 in(第一, 第二, 第三, 第四)) t
执行完成后

本文介绍了Oracle数据库中用于行列转换的pivot和unpivot函数。pivot函数用于将行数据转换为列,例如将学生的科目、排名转换为按科目分列的学生排名;unpivot函数则相反,将列数据转换为行,如将不同科目的排名列转换为每行包含一个学生、科目和排名的数据。这两个函数对于数据分析和报表展示非常有用。
2472

被折叠的 条评论
为什么被折叠?



