1、上来先看下数据以及实现结果:

行转列(decode方式):

WITH CO_ORDER AS(    SELECT 'DOM1' CUSTOMER, 'ZHA01' FACILITY , 4000 TEU FROM DUAL UNION ALL    SELECT 'DOM1' CUSTOMER, 'ZHA01' FACILITY , 5000 TEU FROM DUAL UNION ALL    SELECT 'DOM1' CUSTOMER, 'ZHA02' FACILITY , 9000 TEU FROM DUAL UNION ALL   SELECT 'DOM1' CUSTOMER, 'ZHA03' FACILITY , 9000 TEU FROM DUAL UNION ALL  SELECT 'DOM1' CUSTOMER, 'ZHA04' FACILITY , 4000 TEU FROM DUAL UNION ALL  SELECT 'DOM2' CUSTOMER, 'ZHA01' FACILITY , 6500 TEU FROM DUAL UNION ALL    SELECT 'DOM2' CUSTOMER, 'ZHA02' FACILITY , 6000 TEU FROM DUAL UNION ALL    SELECT 'DOM2' CUSTOMER, 'ZHA03' FACILITY , 5000 TEU FROM DUAL UNION ALL    SELECT 'DOM2' CUSTOMER, 'ZHA04' FACILITY , 3000 TEU FROM DUAL
)
SELECT T.CUSTOMER, SUM(DECODE(T.FACILITY, 'ZHA01', T.TEU)) AS ZHA01,SUM(DECODE(T.FACILITY, 'ZHA02', T.TEU)) AS ZHA02,SUM(DECODE(T.FACILITY, 'ZHA03', T.TEU)) AS ZHA03,SUM(DECODE(T.FACILITY, 'ZHA04', T.TEU)) AS ZHA04
FROM CO_ORDER T
GROUP BY T.CUSTOMER;

行转列(case when方式):

WITH CO_ORDER AS(      SELECT 'DOM1' CUSTOMER, 'ZHA01' FACILITY , 4000 TEU FROM DUAL UNION ALL      SELECT 'DOM1' CUSTOMER, 'ZHA01' FACILITY , 5000 TEU FROM DUAL UNION ALL      SELECT 'DOM1' CUSTOMER, 'ZHA02' FACILITY , 9000 TEU FROM DUAL UNION ALL     SELECT 'DOM1' CUSTOMER, 'ZHA03' FACILITY , 9000 TEU FROM DUAL UNION ALL    SELECT 'DOM1' CUSTOMER, 'ZHA04' FACILITY , 4000 TEU FROM DUAL UNION ALL    SELECT 'DOM2' CUSTOMER, 'ZHA01' FACILITY , 6500 TEU FROM DUAL UNION ALL      SELECT 'DOM2' CUSTOMER, 'ZHA02' FACILITY , 6000 TEU FROM DUAL UNION ALL      SELECT 'DOM2' CUSTOMER, 'ZHA03' FACILITY , 5000 TEU FROM DUAL UNION ALL      SELECT 'DOM2' CUSTOMER, 'ZHA04' FACILITY , 3000 TEU FROM DUAL
)
SELECT CUSTOMER,SUM (CASE WHEN FACILITY = 'ZHA01' THEN TEU ELSE 0 END) AS ZHA01, SUM (CASE WHEN FACILITY = 'ZHA02' THEN TEU ELSE 0 END) AS ZHA02,SUM (CASE WHEN FACILITY = 'ZHA03' THEN TEU ELSE 0 END) AS ZHA03,SUM (CASE WHEN FACILITY = 'ZHA04' THEN TEU ELSE 0 END) AS ZHA04
FROM CO_ORDER GROUP BY CUSTOMER ORDER BY CUSTOMER;

行转列(PIVOT函数方式:)

WITH CO_ORDER AS(    SELECT 'DOM1' CUSTOMER, 'ZHA01' FACILITY , 4000 TEU FROM DUAL UNION ALL    SELECT 'DOM1' CUSTOMER, 'ZHA01' FACILITY , 5000 TEU FROM DUAL UNION ALL    SELECT 'DOM1' CUSTOMER, 'ZHA02' FACILITY , 9000 TEU FROM DUAL UNION ALL   SELECT 'DOM1' CUSTOMER, 'ZHA03' FACILITY , 9000 TEU FROM DUAL UNION ALL  SELECT 'DOM1' CUSTOMER, 'ZHA04' FACILITY , 4000 TEU FROM DUAL UNION ALL  SELECT 'DOM2' CUSTOMER, 'ZHA01' FACILITY , 6500 TEU FROM DUAL UNION ALL    SELECT 'DOM2' CUSTOMER, 'ZHA02' FACILITY , 6000 TEU FROM DUAL UNION ALL    SELECT 'DOM2' CUSTOMER, 'ZHA03' FACILITY , 5000 TEU FROM DUAL UNION ALL    SELECT 'DOM2' CUSTOMER, 'ZHA04' FACILITY , 3000 TEU FROM DUAL
)
SELECT * FROM (SELECT T.CUSTOMER, T.FACILITY, SUM(TEU) EU FROM CO_ORDER T GROUP BY T.CUSTOMER, T.FACILITY) T
PIVOT(SUM(T.EU) FOR FACILITY IN ('ZHA01', 'ZHA02', 'ZHA03', 'ZHA04'));

行转列(WM_CONCAT函数方式:)

WITH CO_ORDER AS(    SELECT 'DOM1' CUSTOMER, 'ZHA01&

Oracle行转列-列转行各种方式wm_concat函数、LISTAGG函数、PIVOT函数、UNPIVOT函数、非数字,以及自动动态获取要转换的列字段名(超详细)相关推荐

  1. oracle列转行查询,Oracle列转行函数Listagg以及pivot查询示例

    简单的Oracle列转行函数Listagg示例: CREATE TABLE tbl_test (catalog VARCHAR(1),product VARCHAR(2),amount NUMBER) ...

  2. oracle unpivot 索引_oracle pivot 和 unpivot 函数的使用

    pivot的格式 select from ( inner_query) pivot(aggreate_function for pivot_column in ( list of values)) o ...

  3. oracle povit,oracle pivot 和 unpivot 函数的使用

    pivot的格式 select from ( inner_query) pivot(aggreate_function for pivot_column in ( list of values)) o ...

  4. oracle数据库中unpivot函数,oracle pivot 和 unpivot 函数的使用

    pivot的格式 select from ( inner_query) pivot(aggreate_function for pivot_column in ( list of values)) o ...

  5. oracle行转列和列转行,oracle行转列和列转行(pivot 和 unpivot 函数,wm_concat函数 )...

    create table demo(id int,name varchar(20),nums int); ---- 创建表 insert into demo values(1, '苹果', 1000) ...

  6. oracle列传行函数,oracle行转列和列转行(pivot 和 unpivot 函数,wm_concat函数 )

    create table demo(id int,name varchar(20),nums int); ---- 创建表 insert into demo values(1, '苹果', 1000) ...

  7. uni-app - 文本展开 / 收起折叠功能,支持自定义样式(当文本内容超出规定行数后,展开收起折叠的功能)兼容 H5 / App / 小程序且易用更容易修改的插件组件源码,超详细的示例代码及注释

    前言 网上的组件和教程代码都太乱了,根本无法按照自己的需求修改,而且基本上都有兼容性和功能性 BUG. 本文实现了 多行文本展开与折叠组件,灵活性非常高,只完成了核心功能,可随意自定义样式满足您的需求 ...

  8. oracle 动态sql列转行_Oracle 行转列 动态出转换的列

    10月的第二天,前天写了个Oracle中行转列的pivot的基本使用方法,然后,因为pivot的用法中,正常情况下,我们需要转出多少个列,都得在我们的sql中完完整整地写出,而不能直接在里面写个查询来 ...

  9. Oracle SQL 行转列,pivot函数和unpivot函数

    转:Oracle行转列,pivot函数和unpivot函数 - waynelo - 博客园 (cnblogs.com) pivot函数:行转列函数: 语法:pivot(任一聚合函数 for 需专列的值 ...

  10. Oracle 行转列 动态出转换的列

    10月的第二天,前天写了个Oracle中行转列的pivot的基本使用方法,然后,因为pivot的用法中,正常情况下,我们需要转出多少个列,都得在我们的sql中完完整整地写出,而不能直接在里面写个查询来 ...

最新文章

  1. MYSQL启用日志,查看日志,利用mysqlbinlog工具恢复MySQL数据库
  2. 『创建型』简单工厂SimpleFactory、工厂方法FactoryMethod、抽象工厂AbstractFactory
  3. java和C++的区别
  4. idea 新建的java项目没发run_IDEA 如何创建一个普通的 Java 项目,及创建 Java 文件并运行...
  5. 为什么各大银行一直在不遗余力推广信用卡呢?
  6. Java程序员必备:异常的十个关键知识点
  7. linux读取stm32唯一识别码,STM32HAL内部识别码,全球唯一识别码,UID读取
  8. 【毕业设计选题】C51单片机毕业设计题目推荐大全
  9. 面试中常被问到(七)封装继承多态知多少
  10. 英汉汉英词典,牛津高级词典,电子词典,离线英汉,汉英词典的使用方法
  11. 流体力学基础——粘性
  12. [电路]3-基尔霍夫定律
  13. 转载和积累系列 - L4负载均衡的设计与实现
  14. 斯嘉丽约翰逊60张pdf什么时间的?_什么叫美丽与演技并存?
  15. WPF的Prism框架简介
  16. 计算机与科技课题题目,新颖的计算机科学技术专业论文选题 计算机科学技术专业论文题目选什么比较好...
  17. 墨西哥区域相关的西班牙语日期的处理方案。。
  18. av_interleaved_write_frame(fmt_ctx, enc_pkt);返回-22
  19. 电脑桌面图标变成蓝色的怎么办
  20. SVG滤镜+阴影+渐变--学习笔记

热门文章

  1. 分析了1011个程序员的裁员情况后得出的启示
  2. 为什么不推荐用汇编语言编写GUI应用程序 From Eggache_man
  3. 程序人生 - 汽车店为什么叫“4S”?
  4. Windows Server 2016正式版14393英文版ISO镜像下载:_X64FRE_ZH-CN.ISO
  5. 武理MOOC课程《认识武理》单元测验答案
  6. ​多模态系统下软体机械手对多种意图的精准实时控制
  7. PAT A1001 A+B Format 巧妙解题方法
  8. 输出9*9乘法口诀表
  9. 智能手机都在抓年轻人,荣耀的方法论特别在哪里?
  10. 支持arcface 2.0 最新版 Java离线人脸识别SDK