zoukankan      html  css  js  c++  java
  • Oracle行转列实例

    行转列

    1.oracle的pivot函数

    原表

    使用pivot函数:

    with temp as(
    select '四川省' nation ,'成都市' city,'第一' ranking from dual union all
    select '四川省' nation ,'绵阳市' city,'第二' ranking from dual union all
    select '四川省' nation ,'德阳市' city,'第三' ranking from dual union all
    select '四川省' nation ,'宜宾市' city,'第四' ranking from dual union all
    select '湖北省' nation ,'武汉市' city,'第一' ranking from dual union all
    select '湖北省' nation ,'宜昌市' city,'第二' ranking from dual union all
    select '湖北省' nation ,'襄阳市' city,'第三' ranking from dual
    )
    select * from (select nation,city,ranking from temp)pivot (max(city) for ranking in ('第一' as 第一,'第二' AS 第二,'第三' AS 第三,'第四' AS 第四));

    说明:pivot(聚合函数 for 列名 in(类型)),其中 in(‘’) 中可以指定别名,in中还可以指定子查询,比如 select distinct ranking from temp

    复制代码
    SELECT * FROM [StudentScores] /*数据源*/
    AS P
    PIVOT 
    (
        SUM(Score/*行转列后 列的值*/) FOR 
        p.Subject/*需要行转列的列*/ IN ([语文],[数学],[英语],[生物]/*列的值*/)
    ) AS T
    复制代码

    列转行

    原表

    with temp as(
    select '四川省' nation ,'成都市' 第一,'绵阳市' 第二,'德阳市' 第三,'宜宾市' 第四  from dual union all
    select '湖北省' nation ,'武汉市' 第一,'宜昌市' 第二,'襄阳市' 第三,'' 第四   from dual
    )
    select nation,name,title from
    temp
    unpivot
    (name for title in (第一,第二,第三,第四))t

     说明:unpivot(自定义列名/*列的值*/ for 自定义列名/*列名*/ in(列名))

    参考:https://www.cnblogs.com/liudi1992/p/6039343.html

  • 相关阅读:
    maven 查看依赖jar包,或获取版版本号 、license
    windows 强制关掉端口
    项目经理是如何选择的?
    windows 10 多系统引导下安装debian linux 系统 引导文件
    在 Mac 环境下 emulator 模拟器不能上网 Android Studio AVD
    WordPress
    使用blob对H5视频播放进行加密
    算法——动态规划
    算法——贪婪算法
    算法——权重最短路径算法
  • 原文地址:https://www.cnblogs.com/snailgirl/p/14768855.html
Copyright © 2011-2022 走看看