oracle pivot 和 unpivot 函数的使用

pivot的格式
select from
( inner_query)
pivot(aggreate_function for pivot_column in ( list of values))
order by ...;
用法举例:
select

from (
select month,prd_type_id,amount
from all_sales
)
pivot (sum(amount) for month in (1 as JAN,2 as FEB,3 as MAR,4 as APR)
)
order by prd_type_id

转换多个列
select * from
(select month,prd_type_id,amount
from all_sales
)
pivot(sum(amount) for (month,prd_type_id) in (
(1,2) as JAN_P2,(2,3) as FEB_P3)
);

在转换中使用多个聚合函数
select * from (select cust_no,mag_man_cert_type,t.mag_man_cert_no,mag_man_type from L_CIF_ENT_CUST_MAG_MAN_INFO t
pivot (max(mag_man_cert_NO) as no ,max(mag_man_cert_type) as type for mag_man_type In (‘01‘ as GLR01,‘02‘ as GLR02,‘03‘ as GLR03));

unpivot可以实现列转行,所转的列的字段类型必须一致
unpivot 的用法举例:
select * from PIVOT_SALES_DATE
unpivot (amount for month in (JAN,FEB,MAR,APR));

原文地址:http://blog.51cto.com/11225554/2150181

时间: 2024-10-01 04:35:36

oracle pivot 和 unpivot 函数的使用的相关文章

pivot 与 unpivot 函数是SQL05新提供的2个函数

pivot 与 unpivot 函数是SQL05新提供的2个函数   ------------------------------------------------------------------------------ pivot函数: create table test(id int,name varchar(20),quarter int,profile int)insert into test values(1,'a',1,1000)insert into test values(

pivot 与 unpivot函数

pivot 与 unpivot函数pivot 与 unpivot 函数是SQL05新提供的2个函数 灰常灰常的实用 ------------------------------------------------------------------------------ pivot函数: create table test(id int,name varchar(20),quarter int,profile int)insert into test values(1,'a',1,1000)i

pivot和unpivot函数

今天小编整理的都是固定行转列(列转行)的例子! 一:unpivot列转行函数举例演示:创建一张表tmp_test,数据如图所示代码展示:select code,name,cource,grade from tmp_test unpivot(grade for source in (chinese,math,english));数据结果展示: 二:pivot行转列函数举例演示:创建一张表tmp_test2,数据如图所示代码展示:select *from (select username,subje

oracle行转列和列转行(pivot 和 unpivot 函数,wm_concat函数 )

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, '橘子',

Oracle pivot & unpivot

pivot & unpivot 11g新特性 1     pivot 以列-值对的形式出现,典型的行转列报表函数. create table test_demo(id int,name varchar(20),nums int);  ---- 创建表 insert into test_demo values(1, '苹果', 1000); insert into test_demo values(2, '苹果', 2000); insert into test_demo values(3, '苹

Oracle11g 行列转换函数PIVOT and UNPIVOT

作为Oracle开发工程师,推荐大伙看看 PIVOT and UNPIVOT Operators in Oracle Database 11g Release 1 This article shows how to use the new PIVOT and UNPIVOT operators in 11g, as well as giving a pre-11g solution to the same problems. PIVOT UNPIVOT Related articles. PIV

Pivot 和 Unpivot

Pivot 和 Unpivot 作者:Arup Nanda  使用简单的 SQL 以电子表格类型的交叉表报表显示任何关系表中的信息,并将交叉表中的所有数据存储到关系表中. Pivot 如您所知,关系表是表格化的,即,它们以列-值对的形式出现.假设一个表名为 CUSTOMERS.SQL> desc customers Name Null? Type ----------------------------------------- -------- ------------------------

通过sql做数据透视表,数据库表行列转换(pivot和Unpivot用法)(一)

在mssql中大家都知道可以使用pivot来统计数据,实现像excel的透视表功能 一.MSsqlserver中我们通常的用法 1.Sqlserver数据库测试 ---创建测试表 Create table s( [name] nvarchar(50), book nvarchar(50), saledNumber int ) ----插入测试数据 insert into s ([name],book,saledNumber) values('小王','java从入门到精通',10); inser

PIVOT和UNPIVOT使用详解

一.使用PIVOT实现数据表的列转行 建表语句: 1 DROP TABLE STUDENT; 2 CREATE TABLE STUDENT ( 3 学生编号 VARCHAR2(20 BYTE) NULL , 4 姓名 VARCHAR2(20 BYTE) NULL , 5 性别 VARCHAR2(20 BYTE) NULL , 6 所属班级 VARCHAR2(20 BYTE) NULL 7 ) 8 ; 9 10 -- ---------------------------- 11 -- Recor