一、wm_concat函数

wm_concat能够实现同样的功能,但是有时在11g中使用需要用to_char()进行转换,否则会出现不兼容现象(WMSYS.WM_CONCAT: 依赖WMSYS 用户,不同oracle环境时可能用不了,返回类型为CLOB,可用substr截取长度后to_char转化为字符类型)。

测试用表test_org_bak

 select * from test_org_bak;

1、:行转列(默认逗号隔开)

 select wm_concat(level_four_name) name from test_org_bak;

2、:更换分隔符

 select replace(wm_concat(level_four_name),',','|') from test_org_bak;

3、:按照事业部分组合并大区

 select level_three_name,wm_concat(level_four_name) name from test_org_bak group by level_three_name;
select level_three_name,wm_concat(distinct level_four_name) name from test_org_bak group by level_three_name;--可去重

二、listagg函数

注意:listagg函数的第一个参数是需要显示的字段,也就是log_name;第二个参数是数值之间的分隔符;同时还需要进行排序和分组within group (order by name)

一般推荐使用LISTAGG()方法去列转行。或者自定义个方法去实现行转列。

 select listagg(level_four_name, ',') within group(order by level_four_name) level_four_name1 from test_org_bak;

结果同上1

 select level_three_name,
listagg(level_four_name, ',') within group(order by level_four_name) level_four_name1
from test_org_bak
group by level_three_name;

解决使用聚合函数LISTAGG进行查询后,对查询结果乱码问题进行转码处理listagg(to_char(列名));

还需注意:LISTAGG:11g2才提供的函数,不支持distinct,拼接长度不能大于4000,函数返回为varchar2类型,最大长度为4000;

ps(一个实用方法:我要写一个视图,类似"create or replace view as select 字段1,...字段50 from tablename" ,基表有50多个字段,要是靠手工写太麻烦了,有没有什么简便的方法? 当然有了,看我如果应用wm_concat来让这个需求变简单

 select 'create or replace view as select '|| wm_concat(column_name) || ' from test'from user_tab_columns where table_name='TEST';

)

(注:此为学习记录笔记,仅供参考若有问题请指正,后续补充......)

参考:https://blog.csdn.net/oJerryZuo/article/details/53927057

oracle 行列转换函数之WM_CONCAT和LISTAGG的使用(一)的更多相关文章

  1. oracle行列转换函数的使用

    oracle 10g wmsys.wm_concat行列转换函数的使用: 首先让我们来看看这个神奇的函数wm_concat(列名),该函数可以把列值以","号分隔起来,并显示成一行 ...

  2. Oracle 行列转换函数pivot、unpivot的使用(二)

    一.行转列pivot 关键函数pivot,其用法如下 pivot(聚合函数 for 列名 in(类型)) select * from table_name pivot(max(column_name) ...

  3. Oracle行列转换

    一.建表与插入数据 1.1.建表 create table kecheng ( id NUMBER, name ), course ), score NUMBER ); insert into kec ...

  4. oracle 行列转换

    oracle 行列转换列名如果是数字,用双引号包住  如下: --  建表 create table workinfo(wid integer primary key,sid integer ,CON ...

  5. Oracle 大小写转换函数

    Oracle 大小写转换函数 转大写UPPER 转小写LOWER 测试: select UPPER('Test') as u from dual; select LOWER('Test') as l ...

  6. [Oracle]行列转换(行合并与拆分)

    使用wmsys.wm_concat 实现行合并 在 Oracle  中, 将某一个栏位的多行数据转换成使用逗号风格的一行显示.能够使用函数  wmsys.wm_concat 达成. 这个在上一篇 or ...

  7. oracle行列转换总结-转载自ITPUB

    原贴地址:http://www.itpub.net/thread-1017026-1-1.html 谢谢原贴大人 最近论坛很多人提的问题都与行列转换有关系,所以我对行列转换的相关知识做了一个总结, 希 ...

  8. Oracle行列转换的思考与总结

    最近几天一直在弄Oracle-SQL的问题,涉及到了一些平时没有用到的东西,也因此而在这里郁闷了好久.现在问题得到了解决虽说不算完美.但是还是和大家一起分享一下. 行列转换之一:sum(case wh ...

  9. Oracle 行列转换总结

    行列转换包括以下六种情况:*列转行*行转列*多列转换成字符串*多行转换成字符串*字符串转换成多列*字符串转换成多行 下面分别进行举例介绍. 首先声明一点,有些例子需要如下10g及以后才有的知识:a.掌 ...

随机推荐

  1. CSS实现input默认文字灰色有提示文字点击后消失鼠标移开显示

    CSS实现input美化操作默认是为灰色,并且有提示 如下图 鼠标点击后文字消失,鼠标移开后文字显示 给input入下图添加代码 style="color:#cccccc; outline: ...

  2. ceph的image扩容

    root@ceph01:/etc/ceph# rbd create --size 1024 test root@ceph01:/etc/ceph# root@ceph01:/etc/ceph# roo ...

  3. HDU 6201 transaction transaction transaction (树形DP)

    题意:给定一棵树,每个点有一个点权,每条边也是,找一条路径,问你 T-S-sum,T表示路径的终点的权值,S表示路径始点的权值,sum表示从S到T的边权和. 析:把这一条路径拆开来看,那么就是必然是从 ...

  4. OpenCV 4 Android

    OpenCV4Android Want a Quick Start link? Use this tutorial: “OpenCV for Android SDK”. 想要快速开始吗?使用这个教程: ...

  5. mysql查询最近7天的数据,没有数据自动补0

    问题描述 查询数据库表中最近7天的记录 select count(*),date(create_time) as date from task where datediff(now(),create_ ...

  6. http-bio-8080"-exec-6

    现象如下:   Tomcat7启动后,后台抛出如下异常,前台一直无法登陆   Exception in thread ""http-bio-8080"-exec-6&qu ...

  7. Arduino I2C + 三轴加速度计ADXL345

    ADXL345是ADI公司生产的三轴数字加速度计芯片,与ST的LIS3DH功能接近.主要特性有: 工作电压:2.0 ~ 3.6V 功耗:待机功耗0.1μA:工作时与数据输出频率(ODR)有关,如ODR ...

  8. 《html5 从入门到精通》读书笔记(二)

    接着上面继续记录笔记,这次要记的知识点比较多...记录下我认为比较重要的东西. 一.表单属性 1.autocomplete属性 该属性规定form或input域应该拥有自动完成功能. <form ...

  9. C# Email 发送邮件,对方打开通知你

    直接上代码: //回执地址 var Receipt = "填写你需要回执的地址"; //实例化两个必要的 MailMessage mail = new MailMessage(); ...

  10. dubbo 安装部署

    dubbo 安装部署   1 安装zookeeper 2 安装dubbo    1 下载源码 https://github.com/alibaba/dubbo 2 编译 mvn clean packa ...