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'

    自强不息,厚德载物
  • 相关阅读:
    万网免费主机wordpress快速建站教程-域名绑定及备案
    java小算法—大衍数列
    Core Data使用之一(Swift): 保存
    Swift 添加到TableView实现动画效果
    Swift 动态创建提示框
    Swift分割字符串
    Swift去除两边的特定字符(空格或其它)
    windows 属性
    String 输出{}
    c# 正则表达式的用户
  • 原文地址:https://www.cnblogs.com/zhoufei2514/p/11176629.html
Copyright © 2011-2022 走看看