Oracle行转列,pivot函数和unpivot函数
pivot函数:行转列函数:
语法:pivot(任一聚合函数 for 需专列的值所在列名 in (需转为列名的值));
unpivot函数:列转行函数:
语法:unpivot(新增值所在列的列名 for 新增列转为行后所在列的列名 in (需转为行的列名));
执行原理:将pivot函数或unpivot函数接在查询结果集的后面。相当于对结果集进行处理。
转换示例:
1.原始表数据:
sql语句:select * from T_PIVOT_TEST_1 ;

2.用pivot函数进行行转列。其中用聚合函数对数据列进行求值,将th列中的值’COL_1‘,’COL_2‘,‘COL_3’转化为列名,并为其加上别名。
sql语句:select * from T_PIVOT_TEST_1
pivot (sum(er) for th in ('COL_1' as 第一列,'COL_2'as 第二列 ,'COL_3' as 第三列));
转换后结果图:

3.用nupivot函数进行列转行。在原sql语句上再加上unpivot函数,将列再转为行,在unpivot函数中,aa与bb为新增的列名,分别表示由列转换为行后的数据所在的列名和数据所在的列名。
sql语句:select * from T_PIVOT_TEST_1
pivot (sum(er) for th in ('COL_1' as 第一列,'COL_2'as 第二列 ,'COL_3' as 第三列))
unpivot ( aa for bb in(第一列,第二列,第三列));
转换后结果图:

Oracle行转列,pivot函数和unpivot函数的更多相关文章
- Oracle 行转列pivot 、列转行unpivot 的Sql语句总结
这个比较简单,用||或concat函数可以实现 select concat(id,username) str from app_user select id||username str from ap ...
- Oracle 行转列(pivot、wm_concat、decode)使用总结
CREATE TABLE CC (Student NVARCHAR2(2),Course NVARCHAR2(2),Score INT ); INSERT into CC select N'张三',N ...
- oracle 行转列函数pivot和unpivot
今天接到业务部门的一个需求,需要对同一公司的不同财务指标进行排序,需要用到oracle的行转列函数unpivot. 财务报表的表结构为: 要实现业务部门的排序筛选功能,需要首先将行数据转为列数据: 使 ...
- sql的行转列(PIVOT)与列转行(UNPIVOT) webapi 跨域问题 Dapper 链式查询 扩展 T4 代码生成 Demo (抽奖程序)
sql的行转列(PIVOT)与列转行(UNPIVOT) 在做数据统计的时候,行转列,列转行是经常碰到的问题.case when方式太麻烦了,而且可扩展性不强,可以使用 PIVOT,UNPIVOT比 ...
- sql 行转列 PIVOT 列转行 UNPIVOT
原文:sql 行转列 PIVOT 列转行 UNPIVOT 一: 现有表一(t_table1),想转为表二(t_table2)的格式. 表一: 年 公司 收入 2013 公司1 12 2013 公司2 ...
- oracle 行转列 分析函数
oracle 行转列 首先看一下源数据: 方法一:WM_CONCAT group by 这个方法没有问题. SELECT CODE_TS, WMSYS.WM_CONCAT(S_NUM + || ':' ...
- MYSQL 行转列 以及基本的聚合函数count,与group by 以及distinct组合使用
在统计查询中,经常会用到count函数,这里是基础的 MYSQL 行转列 以及基本的聚合函数count,与group by 以及distinct组合使用 -- 创建表 CREATE TABLE `tb ...
- oracle行转列和列转行(pivot 和 unpivot 函数,wm_concat函数 )
create table demo(id int,name varchar(20),nums int); ---- 创建表insert into demo values(1, '苹果', 1000); ...
- Oracle行转列(使用pivot函数)
在日常使用中,经常遇到这样的情况,需要将数据库中行转化成列显示,如 转化为 这个时候,我们就需要使用pivot函数 百度后,参考网址http://www.2cto.com/database/20150 ...
随机推荐
- HDU4336:Card Collector(min-max容斥)
题面 传送门 Sol 方法一 直接状压就好了 # include <bits/stdc++.h> # define RG register # define IL inline # def ...
- URL传递中文:Server.UrlEncode与Server.UrlDecode
1.设置web.config文件. <system.web> ...... <globalization requestEncoding="gb2312" r ...
- Java从入门到精通——数据库篇Mongo DB GridFS文件系统
一.概述 GridFS是MongoDB的一种存储机制,用来存储大型二进制文件. 优点: 1.使用GridFS能够简化你的栈.如果已经在使用MongoDB,那么可以使用GridFS来代替独立的文件 ...
- CentOS7 下安装 SublimeText3
原文地址:http://www.sundabao.com/centos-%E5%AE%89%E8%A3%85sublime-text-3/ Centos 安装Sublime text 3 Centos ...
- CentOS 7运维管理笔记(3)----Linux路由器配置
当正在配置的Linux主机需要作为路由器使用时,通过以下步骤配置后,子网上的计算机就可以访问外网了: 1. 编辑 /etc/sysctl.conf 文件,添加 net.ipv4_ip_forward ...
- 二维数组中的查找(C++和Python实现)
(说明:本博客中的题目.题目详细说明及参考代码均摘自 “何海涛<剑指Offer:名企面试官精讲典型编程题>2012年”) 题目 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列 ...
- androidUI异步消息
private Handler handler = new Handler(){ public void handleMessage(android.os.Message msg) { switch ...
- Atlas+Keepalived实现MySQL读写分离、读负载均衡
一.基础介绍 ========================================================================================== 1. ...
- 【Leetcode】【Medium】Binary Tree Inorder Traversal
Given a binary tree, return the inorder traversal of its nodes' values. For example:Given binary tre ...
- Python学习---重点模块之shelve
简单示例 import shelve f = shelve.open(r'shelve.txt') f['info'] = {'name':'ftl', 'age':23, 'sex': 'male' ...