【Oracle】LISTAGG 函数的使用

【Oracle】LISTAGG 函数的使用LISTAGG 函数介绍 listagg 函数是 Oracle11 2 推出的新特性 其主要功能类似于 wmsys wm concat 函数 即将数据分组后 把指定列的数据再通过指定符号合并 LISTAGG 使用 listagg 函数有两个参数 1 要合并的列名 2 自定义连接符号 LISTAGG 函数既是分析函数 也是聚合函数所以 它有两种用法 1 分析函数

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,'' TEL,'深圳' ADDRESS FROM DUAL UNION SELECT 'SNO-0010210' S_NO,'1003' ITEM_NO, 'CandySun' CUS_NAME,'' TEL, '南京' ADDRESS FROM DUAL UNION SELECT 'SNO-0010211' S_NO, '1003' ITEM_NO,'QianSan' CUS_NAME,'' TEL,'南京' ADDRESS FROM DUAL UNION SELECT 'SNO-0010212' S_NO,'1005' ITEM_NO,'HuiClear' CUS_NAME,'' TEL,'白银' ADDRESS FROM DUAL UNION SELECT 'SNO-0010212' S_NO,'1007' ITEM_NO,'CatBool' CUS_NAME,'' TEL,'重庆' ADDRESS FROM DUAL UNION SELECT 'SNO-0010212' S_NO,'1004' ITEM_NO,'Liability' CUS_NAME,'' TEL,'成都' ADDRESS FROM DUAL ) 

test

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) ADDRESS FROM test T GROUP BY T.S_NO; 

res1

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) ADDRESS FROM test T; 

res2

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/233400.html原文链接:https://javaforall.net

(0)
上一篇 2025年7月23日 下午3:01
下一篇 2025年7月23日 下午3:22


相关推荐

  • hpe服务器安装操作系统_hp 服务器 电话

    hpe服务器安装操作系统_hp 服务器 电话服务器安装操作系统才能对服务器进行很好的操作,但是新购买的服务器要如何安装操作系统呢?其实服务器系统安装通常有两种方法:用服务器引导光盘引导安装(HPProliant系列服务器100系列设备随机光盘SupportCD没有引导安装操作系统的功能)、用操作系统光盘加载阵列卡驱动引导安装。  用操作系统光盘直接安装操作系统  通常情况下重新安装操作系统,数据盘的重要数据需要保

    2022年10月4日
    8
  • 大数据概述「建议收藏」

    大数据概述「建议收藏」目录前言1.1大数据概念及价值1.1.1大数据的特征(特点)(1)规模性(Volume)(2)多样性(Variety)(3)高速性(Velocity)(4)价值性(Value)1.2大数据数据源1.3大数据技术应用场景1.4大数据处理流程及技术收集数据数据预处理与存储数据处理与分析数据可视化与应用环节1.5大数据与云计算的关系1.6大数据与人工智能的关系前言现在的社会是一个科技与信息高速发展的社会,人们之间的交流越来..

    2022年5月6日
    66
  • 英语词性大全+详解

    英语词性大全+详解英语词性有 10 种 另有 2 种特殊词性分别是及物 不及物 10 种词性 1 名词 n Nouns 表示人或事物的名称 box pen tree apple2 代词 pron Pronouns 代替名词 数词 形容词 We this them myself3 形容词 adj Adjectives 用来修饰名词 表示人或事物的特征 good sad high short

    2026年3月19日
    4
  • Selenium2+python自动化48-登录方法(参数化)

    Selenium2+python自动化48-登录方法(参数化)

    2022年3月2日
    46
  • VS2010 MFC读取Excel文件中数据

    VS2010 MFC读取Excel文件中数据前段时间写个工具需要从Excel文件中读取数据,Excel表格数据列数为确定值,行数不确定,从网上搜了些方法尝试,最终达到目的,总结如下:

    2022年6月18日
    31
  • 什么是反向代理服务器

    什么是反向代理服务器我们常会看到 反向代理服务器 这个名词 例如常看到文章上说 nginx 是一个反向代理服务器 varnish 是一个反向代理服务器 下面就了解下这个概念含义 反向代理服务器 有两个概念 一是 代理服务器 二是 反向 代理服务器 比较好理解 例如需要访问某网站 不想或不能直接访问 例如网络的原因 隐私的原因等 我们就连接一个代理服务器 这样对于这个网站来说 访问他的用户是这

    2026年3月16日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号