zoukankan      html  css  js  c++  java
  • 行列转换函数

    PIVOT函数与UNPIVOT函数的运用

    PIVOT用于将行转为列,完整语法如下:
    TABLE_SOURCE
    PIVOT(
    聚合函数(value_column)
    FOR pivot_column
    IN(<column_list>)
    )


    UNPIVOT用于将列转为行,完整语法如下:
    完整语法:
    TABLE_SOURCE

    UNPIVOT(

    value_column

    FOR pivot_column

    IN(<column_list>)
    )

    以上语法可以理解为value_column字段与pivot_column字段的行列(列行)转换,pivot_column字段显示的列/行为column_list

     

    --建张表Table_A

    create table Table_A(name varchar(8),Math int,English int,Chinese int)
    insert into Table_A values('小A',80,90,88)
    insert into Table_A values('小B',70,90,85)
    insert into Table_A values('小C',75,95,85)
    insert into Table_A values('小D',80,90,75)

    --原始表数据

    select * from Table_A

    name Math English Chinese
    小A 80 90 88
    小B 70 90 85
    小C 75 95 85
    小D 80 90 75
     

    --UNPIVOT用于将列转为行

    select Subject,name,Grade from Table_A
    unpivot(Grade for Subject in ([Math],[English],[Chinese])) as s

    --如果上面不能执行,用下面这个

    select Subject,name,Grade from Table_A
    unpivot(Grade for Subject in (Math,English,Chinese))

    Subject name Grade
    Math 小A 80
    English 小A 90
    Chinese 小A 88
    Math 小B 70
    English 小B 90
    Chinese 小B 85
    Math 小C 75
    English 小C 95
    Chinese 小C 85
    Math 小D 80
    English 小D 90
    Chinese 小D 75
     

    --PIVOT函数用于将行转为列

    select * from
    (
        select Subject,name,Grade from Table_A
        unpivot(Grade for Subject in ([Math],[English],[Chinese])) as s
    ) as a
    pivot(sum(Grade) for name in ([小A],[小B],[小C],[小D])) as b

     
    Subject 小A 小B 小C 小D
    Chinese 88 85 85 75
    English 90 90 95 90
    Math 80 70 75 80
     

    实现多行多列转换,请参考:http://www.cnblogs.com/hbwy/p/4359209.html

  • 相关阅读:
    【Linux】grep or
    win10查看WiFi密码
    【WPF】Border有显示模糊的情况
    【Spark】配置项spark.network.timeout 的单位是什么
    【Linux】free命令中 free与 available 的区别
    Spark2.3配置项
    java获取jar包执行路径
    编译 thrift-0.14.2 的 C++ 版本
    拉端保障方案
    编译运行ebpf代码的流水账
  • 原文地址:https://www.cnblogs.com/xiaojianblogs/p/8021838.html
Copyright © 2011-2022 走看看