LISTAGG 函数介绍

listagg 函数是 Oracle 11.2 推出的新特性。
其主要功能类似于 wmsys.wm_concat 函数, 即将数据分组后, 把指定列的数据再通过指定符号合并。

LISTAGG 使用

listagg 函数有两个参数:1、 要合并的列名2、 自定义连接符号☆LISTAGG 函数既是分析函数,也是聚合函数
所以,它有两种用法:1、分析函数,如: row_number()、rank()、dense_rank() 等,用法相似listagg(合并字段, 连接符) within group(order by 合并的字段的排序) over(partition by 分组字段)2、聚合函数,如:sum()、count()、avg()等,用法相似listagg(合并字段, 连接符) within group(order by 合并字段排序)     --后面跟 group by 语句

(补充)分析函数和聚合函数

一部分聚合函数其实也可以写成分析函数的形式。分析函数和聚合函数本质上都是对数据进行分组,二者最大的不同便是:对数据进行分组分组之后,聚合函数只会每组返回一条数据,而分析函数会针对每条记录都返回,一部分分析函数还会对同一组中的数据进行一些处理(比如:rank() 函数对每组中的数据进行编号);还有一部分分析函数不会对同一组中的数据进行处理(比如:sum()、listagg()),这种情况下,分析函数返回的数据会有重复的,distinct 处理之后的结果与对应的聚合函数返回的结果一致。

LISTAGG 实例

先构造几笔临时数据
with test as(
SELECT 'SNO-0010210' S_NO,'1002' ITEM_NO,'BruceLiu' CUS_NAME,'15632148754' TEL,'深圳' ADDRESS FROM DUAL
UNION
SELECT 'SNO-0010210' S_NO,'1003' ITEM_NO, 'CandySun' CUS_NAME,'19745233214' TEL, '南京' ADDRESS FROM DUAL
UNION
SELECT 'SNO-0010211' S_NO, '1003' ITEM_NO,'QianSan' CUS_NAME,'19745233214' TEL,'南京' ADDRESS FROM DUAL
UNION
SELECT 'SNO-0010212' S_NO,'1005' ITEM_NO,'HuiClear' CUS_NAME,'19745233214' TEL,'白银' ADDRESS FROM DUAL
UNION
SELECT 'SNO-0010212' S_NO,'1007' ITEM_NO,'CatBool' CUS_NAME,'19745233214' TEL,'重庆' ADDRESS FROM DUAL
UNION
SELECT 'SNO-0010212' S_NO,'1004' ITEM_NO,'Liability' CUS_NAME,'18812436214' TEL,'成都' ADDRESS FROM DUAL
)

LISTAGG 分析函数用法
SELECT T.S_NO,LISTAGG(T.ITEM_NO, '/') WITHIN GROUP(ORDER BY T.S_NO, T.ITEM_NO) ITEM_NO,LISTAGG(T.CUS_NAME, '/') WITHIN GROUP(ORDER BY T.S_NO, T.ITEM_NO) CUS_NAME,LISTAGG(T.TEL, '/') WITHIN GROUP(ORDER BY T.S_NO, T.ITEM_NO) TEL,LISTAGG(T.ADDRESS, '/') WITHIN GROUP(ORDER BY T.S_NO, T.ITEM_NO) ADDRESSFROM test TGROUP BY T.S_NO;

LISTAGG 聚合函数用法
SELECT T.S_NO,LISTAGG(T.ITEM_NO, '/') WITHIN GROUP(ORDER BY T.S_NO, T.ITEM_NO) OVER(PARTITION BY T.S_NO) ITEM_NO,LISTAGG(T.CUS_NAME, '/') WITHIN GROUP(ORDER BY T.S_NO, T.ITEM_NO) OVER(PARTITION BY T.S_NO) CUS_NAME,LISTAGG(T.TEL, '/') WITHIN GROUP(ORDER BY T.S_NO, T.ITEM_NO) OVER(PARTITION BY T.S_NO) TEL,LISTAGG(T.ADDRESS, '/') WITHIN GROUP(ORDER BY T.S_NO, T.ITEM_NO) OVER(PARTITION BY T.S_NO) ADDRESSFROM test T;

【Oracle】LISTAGG 函数的使用相关推荐

  1. oracle listagg函数bug记录

    测试数据在文章的最后给出 select * from test_190619_lagg_bug_1 t1,(select t2.sub_id,listagg(t2.val || '.' ) withi ...

  2. oracle的listagg函数

    今天需要将 BDST_ID相同的PROJECT_ID用逗号分隔拼成一个字符串,于是想到了oracle的listagg函数 表名为PM_BDST_PROJECT select tt.BDST_ID, l ...

  3. listagg 函数--oracle 11g release 2

    http://xpchild.blog.163.com/blog/static/10180985920108485721969/ listagg 函数--oracle 11g release 2 20 ...

  4. oracle listagg方法,Oracle实现字符串拼接和分离功能的方法(LISTAGG函数),oraclelistagg...

    Oracle实现字符串拼接和分离功能的方法(LISTAGG函数),oraclelistagg 字符串拼接(String Aggregation Techniques)是数据处理时经常需要用到一个技术, ...

  5. Oracle的 wm_concat 的排序问题,Oracle的 listagg 函数[转]

    一大早来广图排了大半个钟的队,总算占了个好位子.--2018-07-28 1.环境: 1.操作系统 windows 10 2.数据库:Oracle Database 11g r2 2.需求: 还是看例 ...

  6. Oracle的 wm_concat 的排序问题,Oracle的 listagg 函数

    一大早来广图排了大半个钟的队,总算占了个好位子.--2018-07-28 1.环境: 1.操作系统 windows 10 2.数据库:Oracle Database 11g r2 2.需求: 还是看例 ...

  7. Oracle的 listagg 函数,多行合并一行

    转自:https://blog.csdn.net/Huay_Li/article/details/81257655 --创建学校类型-年级表 create table SchoolGrade(scho ...

  8. 【Oracle】LISTAGG 函数的用法

    函数介绍 listagg函数是Oracle 11.2 c 版本推出的,用于数据分组后将指定列数据通过间隔符号拼接,将多行转为一行显示. 实际使用 以班级为单位,查询每个班级学生(同班学生显示在一行) ...

  9. oracle数据库listagg,Oracle 19c 中的 LISTAGG 函数结果去重

    Oracle 11gR2 中引入了 LISTAGG 函数,以简化字符串聚合.在Oracle 12cR2中,它已扩展为包括溢出错误处理.Oracle 19c 中通过包含 DISTINCT 关键字,可以从 ...

最新文章

  1. glib 2.0 arm linux,glib源码安装使用方法
  2. Abra宣布对BCH的原生支持
  3. 算法提高课-动态规划-树形DP-AcWing 1072. 树的最长路径:dfs写法
  4. 文本编辑器中查找对话框及功能实现
  5. uniapp光标自动定义到文本框_解决这3个问题,你就敢使用自动编号了
  6. (十四)算法设计思想之“贪心算法”
  7. mysql 长事务查询_MySQL长事务详解
  8. 热议创新 众专家再谈 “中国企业如何创造”
  9. c# 全局钩子实现扫码枪获取信息。
  10. Android实战简易教程-第二十八枪(Uri转String型实例)
  11. IDEA 常用设置 与 常用操作(三)
  12. 数据库的主键Id不是从1开始的
  13. 企业微信邀请通知在哪里设置?如何关闭?
  14. PHP防范XSS攻击
  15. 多个CYUSB3014连接主机时添加序列号
  16. 三、E906移植----FPGA生成可用的比特流并实现串口发送
  17. 小学计算机课的游戏橡皮小人,小学计算机科学课:两个女孩和男孩使用带增强现实软件的数码平板电脑,他们感到兴奋、充满惊奇、好奇。STEM 、游戏、学习中的儿童...
  18. 如何使自己跳得更高?------学习跳蚤效应的五点体会
  19. 浅析MOS管开关速度影响因素-KIA MOS管
  20. 信阳市少年计算机学校,信阳市胜利路学校: 奖杯璀璨 少年奋进

热门文章

  1. c语言图形左右对称,抛物线是对称的,但为什么画出来两边不一样高?
  2. FAT12文件系统介绍
  3. 冬至(Winter Solstice)
  4. 如何将Google浏览器安装到D盘(内含教学视频)
  5. 2015年最具潜力的十大微信公众号
  6. matlab矩阵复制函数:repmat
  7. 《自然语言处理》第二次实验:机器翻译(Transformer中英文翻译实验)
  8. 最长回文串 马拉车算法 C++
  9. Cisco PBTS和Route MAP技术,以及H3C的Route Policy
  10. 【初等数论四大定理之三】欧拉定理,费马小定理,威尔逊定理