oracle pivot

2024-09-01 16:08
文章标签 oracle pivot

本文主要是介绍oracle pivot,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

语法:

Select * From 表名-- 这个表应该是下面聚合之后的表,而不是原理的行表
PIVOT
(
  SUM('要合并的列1'),MAX('要合并的列2'),.... --操作的列

FOR

 将值转换成列的列名 IN
(列值1,列值2,列值3,列值4....)
)

示例:

with t as (
Select '桃子' name, 300 nums ,1 jidu from dual
Union
Select '苹果' name, 200 nums ,1 jidu from dual
Union
Select '西瓜' name, 100 nums ,1 jidu from dual
Union
Select '桃子' name, 111 nums ,2 jidu from dual
Union
Select '西瓜' name, 222 nums ,2 jidu from dual
Union
Select '苹果' name, 333 nums ,2 jidu from dual
)

--select * from t pivot(sum(nums) for name in ('桃子','西瓜','苹果')) order by jidu; --这样只能全部显示出来,不能达到聚合的目的

select * from (select name, nums from t) pivot (max(nums) for name in ('桃子','西瓜','苹果'));

结果:

例子是从别人那里找到的,但是并不能达到目的。后来又研究了一下。

 

列转行:

with x as {
 
select 1 id ,'苹果' name ,1000 p1,2000 p2 ,3300 p3 ,5000 p4 from dual
union
 select 2 id ,'橘子' name ,1000 p1,2000 p2 ,3300 p3 ,5000 p4 from dual
union
 select 3 id ,'香蕉' name ,1000 p1,2000 p2 ,3300 p3 ,5000 p4 from dual
union
 select 4 id ,'葡萄' name ,1000 p1,2000 p2 ,3300 p3 ,5000 p4 from dual
}

select id , name, jidu, num  from x unpivot (xiaoshou for num  in (q1, q2, q3, q4) )。

没有找到语法,估计是

select id(已经存在的),name(已经存在的),jidu(新加的列名,和后面的for有关,in内值的标题成为值), num (新加的列名, in后值的列名)

这篇关于oracle pivot的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1127408

相关文章

Oracle type (自定义类型的使用)

oracle - type   type定义: oracle中自定义数据类型 oracle中有基本的数据类型,如number,varchar2,date,numeric,float....但有时候我们需要特殊的格式, 如将name定义为(firstname,lastname)的形式,我们想把这个作为一个表的一列看待,这时候就要我们自己定义一个数据类型 格式 :create or repla

ORACLE 11g 创建数据库时 Enterprise Manager配置失败的解决办法 无法打开OEM的解决办法

在win7 64位系统下安装oracle11g,在使用Database configuration Assistant创建数据库时,在创建到85%的时候报错,错误如下: 解决办法: 在listener.ora中增加对BlueAeri-PC或ip地址的侦听,具体步骤如下: 1.启动Net Manager,在“监听程序”--Listener下添加一个地址,主机名写计

Oracle Start With关键字

Oracle Start With关键字 前言 旨在记录一些Oracle使用中遇到的各种各样的问题. 同时希望能帮到和我遇到同样问题的人. Start With (树查询) 问题描述: 在数据库中, 有一种比较常见得 设计模式, 层级结构 设计模式, 具体到 Oracle table中, 字段特点如下: ID, DSC, PID; 三个字段, 分别表示 当前标识的 ID(主键), DSC 当

oracle分页和mysql分页

mysql 分页 --查前5 数据select * from table_name limit 0,5 select * from table_name limit 5 --limit关键字的用法:LIMIT [offset,] rows--offset指定要返回的第一行的偏移量,rows第二个指定返回行的最大数目。初始行的偏移量是0(不是1)。   oracle 分页 --查前1-9

ORACLE语法-包(package)、存储过程(procedure)、游标(cursor)以及java对Result结果集的处理

陈科肇 示例: 包规范 CREATE OR REPLACE PACKAGE PACK_WMS_YX IS-- Author : CKZ-- Created : 2015/8/28 9:52:29-- Purpose : 同步数据-- Public type declarations,游标 退休订单TYPE retCursor IS REF CURSOR;-- RETURN vi_co_co

Oracle主键和外键详解及实用技巧

在 Oracle 数据库中,主键(Primary Key)和外键(Foreign Key)用于维护数据库表之间的数据完整性。 1. 主键(Primary Key) 主键是一列或多列,能够唯一标识表中的每一行。表中只能有一个主键,并且主键列不能为空(即 NOT NULL)。 特性: 唯一性:主键中的每一个值都是唯一的,不能重复。非空性:主键列不能包含 NULL 值。索引:Oracle 自动为

分享MSSQL、MySql、Oracle的大数据批量导入方法及编程手法细节

1:MSSQL SQL语法篇: BULK INSERT      [ database_name . [ schema_name ] . | schema_name . ] [ table_name | view_name ]         FROM 'data_file'        [ WITH       (      [ [ , ] BATCHSIZE = batch_siz

Oracle start with connect BY 死循环

解决办法 检查start with前有没有where条件, 如果有的话,套一层select,再 Oracle start with connect BY

Java调用Oracle存储过程一

一、通过PL/SQL工具连接上Oracle数据库,创建表zx_test_procedure 二、创建存储过程 ①无返回值的存储过程 存储过程为: create or replace procedure testa (para1 in varchar2,para2 in varchar2) as begin insert into zx_test_procedure(i_id,i_n

PL/SQL工具创建Oracle数据库表,实现id字段的自动递增

通过PL/SQL工具,创建Oracle数据库表,如何实现字段ID自动递增; Oracle的自增需要依靠序列和触发器共同实现 比如:先创建一个表 create table test (id int primary key, name varchar2(10)); 创建一个序列 create sequence test_seq increment by 1 start with 1  min