zoukankan      html  css  js  c++  java
  • Oracle——行转列、列转行函数(pivot 和 unpivot函数)

    pivot

    语法:

    (聚合函数 for 列名 in(类型))

    注:其中 in(‘’) 中可以指定别名,in中还可以指定子查询。

    例子:

    select * from 
    (
    select 333 nums,'苹果' names from dual 
    union all
    select 555 nums,'香蕉' names from dual 
    union all
    select 777 nums,'鸭梨' names from dual
    ) pivot(sum(nums) for names in ('苹果','香蕉','鸭梨'))

    unpivot

    注:没有聚合函数

    例子:

    select nums,names from (                                                                    
    select 
       333 苹果,
       555 香蕉,
       666 鸭梨
    from dual )
      unpivot(names for nums in(苹果,香蕉,鸭梨)) 

    例2:

    创建表A

    create table A 
    (
    ssyf varchar2(10),
    num1 number,
    num2 number,
    num3 number
    );

    往表A插入数据

    SSYF     NUM1 NUM2 NUM3  SZ
    201901    1    2    3    a
    201902    2    2    2    a
    201903    3    3    3    a
    201904    4    4    4    a
    201905    5    5    5    a
    201906    6    6    6    a
    201907    7    7    7    a
    201908    8    8    8    a
    201909    9    9    9    a
    201910    10    10    10    a
    201911    11    11    11    a
    201912    12    12    12    a
    201901    1    1    1    b
    201902    2    2    2    b
    201903    3    3    3    b
    201904    4    4    4    b
    201905    5    5    5    b
    201906    6    6    6    b
    201907    7    7    7    b
    201908    8    8    8    b
    201909    9    9    9    b
    201910    10    10    10    b
    201911    11    11    11    b
    201912    12    12    12    b

    代码和结果如下

    1.

    select *
      from a
    pivot(sum(num1) num1, sum(num2) num2, sum(num3) num3
       for ssyf in('201901',
                   '201902',
                   '201903',
                   '201904',
                   '201905',
                   '201906',
                   '201907',
                   '201908',
                   '201909',
                   '201910',
                   '201911',
                   '201912'))

    结果:

     2.

    select shu1, shu2, zdmc, ssyf, sz
      from a unpivot((shu1, shu2) for zdmc in((num1, num2) as
                                               '1and2',
                                               (num2, num3) as
                                               '2and3',
                                               (num1, num3) as
                                               '1and3'))
     where ssyf = '201901'
       and sz = 'a'

    自强不息,厚德载物
  • 相关阅读:
    SQLMAP注入教程-11种常见SQLMAP使用方法详解
    VS2012/2013/2015/Visual Studio 2017 关闭单击文件进行预览的功能
    解决 IIS 反向代理ARR URLREWRITE 设置后,不能跨域跳转 return Redirect 问题
    Spring Data JPA one to one 共享主键关联
    JHipster 问题集中
    Spring Data JPA 定义超类
    Spring Data JPA查询关联数据
    maven命名
    maven仓库
    Jackson读取列表
  • 原文地址:https://www.cnblogs.com/zhoufei2514/p/11176629.html
Copyright © 2011-2022 走看看