展开全部

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 多列 列转行相关推荐

  1. oracle列转行 多个字段_oracle 行转列~列转行(几种方法)

    工作中,我们经常会碰到行转列的情况 这里我介绍几种简单的方法--行转列 1.oracle的pivot函数 原表 使用pivot函数: with temp as( select '四川省' nation ...

  2. oracle列转行 多个字段_oracle 列转行、行转列

    行转列:PIVOT 列转行:UNPIVOT 这两个是在oracle11g上面新增的函数.下面举例说明用法. PIVOT: 学生成绩表,原数据: select class_name, student_n ...

  3. oracle列转行 多个字段_Oracle: Oracle行转列、列转行的Sql语句总结

    例子原型: select bkg_num,shpr_cde from CD_XLS_UPLOAD_DETAIL where cd_xls_upload_uuid='392' ; 运行结果如下: 一.多 ...

  4. oracle plsql update两个字段_Oracle 学习笔记(Windows 环境下安装 + PL/SQL)

    Oracle 安装.PL/SQL 配置使用 前言:因更换机械硬盘为 SSD 固态硬盘装了新 Windows 7 系统,需要重新搭建开发环境,把 Oracle 安装过程和 PL/SQL 配置使用做下笔记 ...

  5. oracle 动态sql列转行_Oracle 行转列 动态出转换的列

    10月的第二天,前天写了个Oracle中行转列的pivot的基本使用方法,然后,因为pivot的用法中,正常情况下,我们需要转出多少个列,都得在我们的sql中完完整整地写出,而不能直接在里面写个查询来 ...

  6. oracle修改表字段名备注_Oracle修改表或者字段的注释

    转自:https://www.cnblogs.com/fx-blog/p/7132833.html 语句: comment on table 表名 is '表的注释信息'; comment on co ...

  7. oracle 会话数上不去_Oracle初识

    1.基本概念 oracle数据库是一个物理概念,oracle实例是数据库在内存中的镜像,属于一种逻辑概念. oracle数据库与oracle实例至少是一对一的关系,也可能是一对多关系(oracle集群 ...

  8. 不同数据库中两列字段相减(某列有空值)

    数据库中两个字段相减(某列有空值)处理方法: sql server中:select (isnull(字段1,0)-isnull(字段2,0)) as 结果 from 表 oracle中:select ...

  9. oracle层级关系按列存储_几张图看懂列式存储

    最近看到一篇很好资料,里面三言两语配上几个图就把列式存储(Column-based Storage)讲明白了,牛啊!最喜欢的就是这种浅显易懂就把背景知识讲得明明白白,而不是长篇大论的讲概念. 1 为什 ...

最新文章

  1. Clojure程序设计
  2. codevs——1294 全排列
  3. 一步步学习操作系统(1)——参照ucos,在STM32上实现一个简单的多任务(“啰里啰嗦版”)...
  4. Java static initialization研究
  5. 37)智能指针(就是自动delete空间)
  6. 精简linux操作系统,Tiny Core Linux—仅10多MB的精简Linux 操作系统发行版
  7. php 自动处理小图的代码,php对图像的各种处理函数代码小结
  8. mac idea命令精简使用版常用指令
  9. tensorflow之数据集
  10. 汝跟被升职者之间,不存在竞争关系
  11. 劲舞团显示正在登录message 服务器,[新手]劲舞团2.0之表情和message系统
  12. 计算机学院迎条幅,会计学院迎新标语条幅
  13. [组合数学] NC13611树 (逆元的计算)
  14. 2021年茶艺师(中级)考试及茶艺师(中级)实操考试视频
  15. yocto 基本概念
  16. 命令行启动burp报错:-Xbootclasspath/p is no longer a supported option.解决方法(Mac )
  17. Halcon 初体验
  18. 最易/难学习的编程语言榜单出炉,C++最难学?
  19. 黑客入侵应急分析手工排查
  20. Google面试题(java)—有四个线程1、2、3、4。线程1的功能就是输出1,线程2的功能就是输出2,以此类推.........现在有四个文件ABCD

热门文章

  1. 企业如何有效制定企业信息化发展规划?(附信息化模板)
  2. vue3的pinia详解
  3. 第三章 表格、列表和表单(黑马程序员课程笔记)
  4. 点焊机器人焊接超时_点焊机器人常见故障
  5. Java - 静态代理
  6. Cisco路由器的物理模块原理
  7. 递推最小二乘法RLS公式详细推导
  8. 新Chrome浏览器不支持html5的问题
  9. 「Arm Arch」 ISA 指令集
  10. 【Super Resolution】超分辨率——SRCNN