Oracle 行列转换 -- pivot & unpivot

本文介绍了Oracle数据库中进行行列转换的方法,重点讲解了pivot和unpivot的使用。通过实例展示了如何使用pivot进行行转多列,以及unpivot实现行转列,并给出了完整的转换代码示例。
摘要由CSDN通过智能技术生成

目录

一、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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值