目录
一、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));