oracle 总转横函数,详解Oracle行列转换函数-pivot函数和unpivot函数-多智时代
今天主要介绍一下Oracle行转列及列转行常见函数,下面一起来看看吧!
行列转换
pivot函数:行转列函数
语法:pivot(任一聚合函数 for 需专列的值所在列名 in (需转为列名的值));
unpivot函数:列转行函数
语法:unpivot(新增值所在列的列名 for 新增列转为行后所在列的列名 in (需转为行的列名));
执行原理:将pivot函数或unpivot函数接在查询结果集的后面。相当于对结果集进行处理。
下面主要用实验来帮助大家理解下这两个函数用法。
实验
1、准备环境create table t(t1 varchar2(10),t2 varchar2(10),t3 int);insert into t values('第一行','COL_1',12); insert into t values('第一行','COL_2',24);insert into t values('第一行','COL_3',44); insert into t values('第二行','COL_1',12);insert into t values('第二行','COL_2',24); insert into t values('第二行','COL_3',44);insert into t values('第三行','COL_1',12); insert into t values('第三行','COL_2',24);insert into t values('第三行','COL_3',44); insert into t values('第四行','COL_1',12);insert into t values('第四行','COL_2',24); insert into t values('第四行','COL_3',44);insert into t values('第五行','COL_1',12); insert into t values('第五行','COL_2',24);insert into t values('第五行','COL_3',44); insert into t values('第六行','COL_1',12);insert into t values('第六行','COL_2',24); insert into t values('第六行','COL_3',44);insert into t values('第七行','COL_1',12); insert into t values('第七行','COL_2',24);insert into t values('第七行','COL_3',44); insert into t values('第八行','COL_1',12);insert into t values('第八行','COL_2',24); insert into t values('第八行','COL_3',44);insert into t values('第九行','COL_1',12); insert into t values('第九行','COL_2',24);insert into t values('第九行','COL_3',44); insert into t values('第十行','COL_1',12);insert into t values('第十行','COL_2',24); insert into t values('第十行','COL_3',44);
2、pivot函数行转列
用pivot函数进行行转列。其中用聚合函数对数据列进行求值,将t2列中的值’COL_1‘,’COL_2‘,‘COL_3’转化为列名,并为其加上别名。select * from t pivot (sum(t3) for t2 in ('COL_1' as 第一列,'COL_2'as 第二列 ,'COL_3' as 第三列));
3、unpivot函数列转行
在原sql语句上再加上unpivot函数,将列再转为行,在unpivot函数中,aa与bb为新增的列名,分别表示由列转换为行后的数据所在的列名和数据所在的列名。select * from t pivot (sum(t3) for t2 in ('COL_1' as 第一列,'COL_2'as 第二列 ,'COL_3' as 第三列))unpivot ( aa for bb in(第一列,第二列,第三列));
详解Oracle行列转换函数--pivot函数和unpivot函数
立即下载
注册下载
oracle 总转横函数,详解Oracle行列转换函数-pivot函数和unpivot函数-多智时代相关推荐
- oracle调试存储过程加断点,详解Oracle调试存储过程
详解Oracle调试存储过程 一 调试关键步骤 1.在要调试的存储过程右键,选择编辑以进行调试,截图如下: 2.点击小瓢虫,弹出调试窗口,截图如下: 3.输入7839员工编号,点击确认,进行调试,截图 ...
- mysql unpivot_SQL(横表和纵表)行列转换,PIVOT与UNPIVOT的区别和使用方法举例,合并列的例子...
使用过SQL Server 2000的人都知道,要想实现行列转换,必须综合利用聚合函数和动态SQL,具体实现起来需要一定的技巧,而在SQL Server 2005中,使用新引进的关键字PIVOT/UN ...
- oracle 根节点函数,详解Oracle分析函数
分析函数是Oracle专门用于解决复杂报表统计需求的功能强大的函数,它可以在数据中进行分组然后计算基于组的某种统计值,并且每一组的每一行都可以返回一个统计值.分析函数带有一个开窗函数over(),包含 ...
- ef oracle 批量更新慢_详解Oracle中多表关联批量插入、批量更新与批量删除
概述 今天主要介绍一下Oracle数据库中多表关联批量插入.多表关联批量更新和多表关联批量删除.下面用实验来理解下~ 一.创建必须的表和序列语句 --创建部门表 dept:CREATE TABLE d ...
- 今晚8点,Oracle ACE男神Roger详解Oracle中为什么没有double write?
Oracle中为什么没有double write?那支持原子写吗? -4月29日20:00 学习MySQL数据库的朋友都知道MySQL中有个非常重要的概念即double write:甚至还有相关内存结 ...
- oracle 游标内存自动释放,详解Oracle隐式游标和显式游标
游标是什么?就是在内存开辟的一块临时存储空间. 1.Oracle隐式游标 1.1Oracle有常用的哪些隐式游标 1.2 Oracle隐式游标演示 -- 隐式游标 (使用的表为Oracle默认自带的e ...
- 详解oracle多种表连接方式,详解Oracle多种表连接方式
ORACLE 多表连接与子查询 连接的类型 Oracle8i之前的表连接: 等值连接(Equijoin) 非等值连接(Non-Equijoin) 外连接(Outer join):-->左外连接- ...
- oracle call 存储过程 带out_详解oracle数据库存储过程调试方法
概述 虽然现在存储过程相对比较少用了,但是平时接触不可避免的要跟存储过程打交道,当需要自己写的时候总会碰到这或那的错误,这个时候一般要怎么调试呢? PL/SQL调试 PL/SQL中提供了[调试存储过程 ...
- c语言中strtok函数详解,手把手教你自主实现字符串切割函数,内附详细代码。
函数功能简介: 对字符串str进行切割,切割的标志为字符指针q指向的这两个字符 "# *":. 但是在对这个函数进行调用时,只有在第一次调用时,才会将str这个字符串的首地址传递过 ...
最新文章
- php获取当前系统配置文件,thinkphp5.1+配置文件结构及获取
- 【转】全面理解javascript的arguments,callee,caller,call,apply概念(修改版)
- python简单实用案例_Python 21 Django 实用小案例1
- 市面上有哪几种门_市面上常见的木门种类有哪些呢?
- coreboot学习4:启动流程跟踪之romstage阶段
- 【Siddhi 5】Siddhi 5 源码编译
- java二进制八进制十六进制写法,java 二进制,八进制,十进制,十六进制间相互转换的步骤...
- BZOJ 3720 树分块
- 时间序列分析--移动平均法预测模型
- 网络收藏夹--用来收藏我经常访问的网站
- 起风了用计算机打,求《起风了》计算器谱。
- vue项目运行后自动打开浏览器
- undo和redo日志
- 桌面应用开发技术对比
- Java jdk keytool 实现SSL双向认证的方法(客户端与服务器)
- 国内怎么开通苹果Arcade订阅
- java properties文件 变量_properties文件和环境变量
- GIS标准分幅工具——制作图幅接合表
- 时序优化方法和引起时序违例的若干问题
- python中保留字的含义_Python中的变量之保留字与标识符