Bootstrap

Oracle 行列转换 -- pivot & unpivot

目录

一、oracle行列转换

二、pivot & unpivot

1. pivot

1) 准备数据

2) 实现行转多列

2. unpivot

1) 准备数据

2) 实现行转列

3) 实现行转多列

三、举个栗子

1. 准备表1的数据

2. 用unpivot将数据转换为一列

3. 用pivot转换为行

4. 全部代码


一、oracle行列转换

常用的行列转换方式有pivot/unpivot、case when、decode。后两种真的很麻烦。

参考https://www.cnblogs.com/xiao02fang/p/9705609.html

还可以用wm_concat。

二、pivot & unpivot

转自https://blog.csdn.net/paopaopotter/article/details/81735922

1. pivot

1) 准备数据

create table t_demo(id int,name varchar(20),nums int);  ---- 创建表  
insert into t_demo values(1, '苹果', 1000);  
insert into t_demo values(2, '苹果', 2000);  
insert into t_demo values(3, '苹果', 4000);  
insert into t_demo values(4, '橘子', 5000);  
insert into t_demo values(5, '橘子', 3000);  
insert into t_demo values(6, '葡萄', 3500);  
insert into t_demo values(7, '芒果', 4200);  
insert into t_demo values(8, '芒果', 5500); 

2) 实现行转多列

select * 
from (select name, nums from t_demo) 
pivot (sum(nums) total,min(nums) min for name in ('苹果' apple, '橘子' orange, '葡萄' grape, '芒果' mango));

 

2. un

;