oracle列转行 多个字段_oracle 多列 列转行
展开全部
Oracle 11g 行列互换 pivot 和 unpivot 说明在Oracle 11g中,Oracle 又增加了2个查询:pivot(行转列) 和unpivot(列转行)
参考:https://blog.csdn.net/tianlesoftware/article/details/7060306、https://www.oracle.com/technetwork/cn/articles/11g-pivot-101924-zhs.htmlgoogle 一下,网上有e68a84e8a2ad62616964757a686964616f31333365643536一篇比较详细的文档:https://www.oracle-developer.net/display.php?id=506
pivot 列转行
测试数据 (id,类型名称,销售数量),案例:根据水果的类型查询出一条数据显示出每种类型的销售数量。
?
123456789
create table demo(id int,name varchar(20),nums int); ---- 创建表insert into demo values(1, '苹果', 1000);insert into demo values(2, '苹果', 2000);insert into demo values(3, '苹果', 4000);insert into demo values(4, '橘子', 5000);insert into demo values(5, '橘子', 3000);insert into demo values(6, '葡萄', 3500);insert into demo values(7, '芒果', 4200);insert into demo values(8, '芒果', 5500);
分组查询 (当然这是不符合查询一条数据的要求的)
?
1
select name, sum(nums) nums from demo group by name
行转列查询
?
1
select * from (select name, nums from demo) pivot (sum(nums) for name in ('苹果' 苹果, '橘子', '葡萄', '芒果'));
注意: pivot(聚合函数 for 列名 in(类型)) ,其中 in(‘’) 中可以指定别名,in中还可以指定子查询,比如 select distinct code from customers
当然也可以不使用pivot函数,等同于下列语句,只是代码比较长,容易理解
?
12
select * from (select sum(nums) 苹果 from demo where name='苹果'),(select sum(nums) 橘子 from demo where name='橘子'), (select sum(nums) 葡萄 from demo where name='葡萄'),(select sum(nums) 芒果 from demo where name='芒果');
unpivot 行转列
顾名思义就是将多列转换成1列中去
案例:现在有一个水果表,记录了4个季度的销售数量,现在要将每种水果的每个季度的销售情况用多行数据展示。
创建表和数据
?
1234567
create table Fruit(id int,name varchar(20), Q1 int, Q2 int, Q3 int, Q4 int); insert into Fruit values(1,'苹果',1000,2000,3300,5000);insert into Fruit values(2,'橘子',3000,3000,3200,1500);insert into Fruit values(3,'香蕉',2500,3500,2200,2500);insert into Fruit values(4,'葡萄',1500,2500,1200,3500);select * from Fruit
列转行查询
?
1
select id , name, jidu, xiaoshou from Fruit unpivot (xiaoshou for jidu in (q1, q2, q3, q4) )
注意: unpivot没有聚合函数,xiaoshou、jidu字段也是临时的变量
oracle列转行 多个字段_oracle 多列 列转行相关推荐
- oracle列转行 多个字段_oracle 行转列~列转行(几种方法)
工作中,我们经常会碰到行转列的情况 这里我介绍几种简单的方法--行转列 1.oracle的pivot函数 原表 使用pivot函数: with temp as( select '四川省' nation ...
- oracle列转行 多个字段_oracle 列转行、行转列
行转列:PIVOT 列转行:UNPIVOT 这两个是在oracle11g上面新增的函数.下面举例说明用法. PIVOT: 学生成绩表,原数据: select class_name, student_n ...
- oracle列转行 多个字段_Oracle: Oracle行转列、列转行的Sql语句总结
例子原型: select bkg_num,shpr_cde from CD_XLS_UPLOAD_DETAIL where cd_xls_upload_uuid='392' ; 运行结果如下: 一.多 ...
- oracle plsql update两个字段_Oracle 学习笔记(Windows 环境下安装 + PL/SQL)
Oracle 安装.PL/SQL 配置使用 前言:因更换机械硬盘为 SSD 固态硬盘装了新 Windows 7 系统,需要重新搭建开发环境,把 Oracle 安装过程和 PL/SQL 配置使用做下笔记 ...
- oracle 动态sql列转行_Oracle 行转列 动态出转换的列
10月的第二天,前天写了个Oracle中行转列的pivot的基本使用方法,然后,因为pivot的用法中,正常情况下,我们需要转出多少个列,都得在我们的sql中完完整整地写出,而不能直接在里面写个查询来 ...
- oracle修改表字段名备注_Oracle修改表或者字段的注释
转自:https://www.cnblogs.com/fx-blog/p/7132833.html 语句: comment on table 表名 is '表的注释信息'; comment on co ...
- oracle 会话数上不去_Oracle初识
1.基本概念 oracle数据库是一个物理概念,oracle实例是数据库在内存中的镜像,属于一种逻辑概念. oracle数据库与oracle实例至少是一对一的关系,也可能是一对多关系(oracle集群 ...
- 不同数据库中两列字段相减(某列有空值)
数据库中两个字段相减(某列有空值)处理方法: sql server中:select (isnull(字段1,0)-isnull(字段2,0)) as 结果 from 表 oracle中:select ...
- oracle层级关系按列存储_几张图看懂列式存储
最近看到一篇很好资料,里面三言两语配上几个图就把列式存储(Column-based Storage)讲明白了,牛啊!最喜欢的就是这种浅显易懂就把背景知识讲得明明白白,而不是长篇大论的讲概念. 1 为什 ...
最新文章
- Clojure程序设计
- codevs——1294 全排列
- 一步步学习操作系统(1)——参照ucos,在STM32上实现一个简单的多任务(“啰里啰嗦版”)...
- Java static initialization研究
- 37)智能指针(就是自动delete空间)
- 精简linux操作系统,Tiny Core Linux—仅10多MB的精简Linux 操作系统发行版
- php 自动处理小图的代码,php对图像的各种处理函数代码小结
- mac idea命令精简使用版常用指令
- tensorflow之数据集
- 汝跟被升职者之间,不存在竞争关系
- 劲舞团显示正在登录message 服务器,[新手]劲舞团2.0之表情和message系统
- 计算机学院迎条幅,会计学院迎新标语条幅
- [组合数学] NC13611树 (逆元的计算)
- 2021年茶艺师(中级)考试及茶艺师(中级)实操考试视频
- yocto 基本概念
- 命令行启动burp报错:-Xbootclasspath/p is no longer a supported option.解决方法(Mac )
- Halcon 初体验
- 最易/难学习的编程语言榜单出炉,C++最难学?
- 黑客入侵应急分析手工排查
- Google面试题(java)—有四个线程1、2、3、4。线程1的功能就是输出1,线程2的功能就是输出2,以此类推.........现在有四个文件ABCD