Oracle函数之LISTAGG
最近在学习的过程中,发现一个挺有意思的函数,它可实现对列值的拼接。下面我们来看看其具体用法。
用法:
对其作用,官方文档的解释如下:
For a specified measure, LISTAGG
orders data within each group specified in the ORDER
BY
clause and then concatenates the values of the measure column.
即在每个分组内,LISTAGG根据order by子句对列植进行排序,将排序后的结果拼接起来。
measure_expr:可以是任何基于列的表达式。
delimiter:分隔符,默认为NUL
order_by_clause:order by子句决定了列值被拼接的顺序。
通过该用法,可以看出LISTAGG函数不仅可作为一个普通函数使用,也可作为分析函数。
order_by_clause和query_partition_clause的用法如下:
下面对该函数进行举例说明:
普通函数,对工资进行排序,用逗号进行拼接。
SQL> select listagg(ename,',')within group(order by sal)name from emp;NAME ---------------------------------------------------------------------------------------------------- SMITH,JAMES,ADAMS,MARTIN,WARD,MILLER,TURNER,ALLEN,CLARK,BLAKE,JONES,FORD,SCOTT,KING
分组函数:
SQL> select deptno,listagg(ename,',')within group(order by sal)name from emp group by deptno;DEPTNO NAME ---------- ----------------------------------------------------------------------------------------------------10 MILLER,CLARK,KING20 SMITH,ADAMS,JONES,FORD,SCOTT30 JAMES,MARTIN,WARD,TURNER,ALLEN,BLAKE
分析函数:
SQL> select deptno,ename,sal,listagg(ename,',')within group(order by sal)over(partition by deptno)name from emp;DEPTNO ENAME SAL NAME ---------- ---------- ---------- ----------------------------------------10 MILLER 1300 MILLER,CLARK,KING10 CLARK 2450 MILLER,CLARK,KING10 KING 5000 MILLER,CLARK,KING20 SMITH 800 SMITH,ADAMS,JONES,SCOTT,FORD20 ADAMS 1100 SMITH,ADAMS,JONES,SCOTT,FORD20 JONES 2975 SMITH,ADAMS,JONES,SCOTT,FORD20 SCOTT 3000 SMITH,ADAMS,JONES,SCOTT,FORD20 FORD 3000 SMITH,ADAMS,JONES,SCOTT,FORD30 JAMES 950 JAMES,MARTIN,WARD,TURNER,ALLEN,BLAKE30 MARTIN 1250 JAMES,MARTIN,WARD,TURNER,ALLEN,BLAKE30 WARD 1250 JAMES,MARTIN,WARD,TURNER,ALLEN,BLAKE30 TURNER 1500 JAMES,MARTIN,WARD,TURNER,ALLEN,BLAKE30 ALLEN 1600 JAMES,MARTIN,WARD,TURNER,ALLEN,BLAKE30 BLAKE 2850 JAMES,MARTIN,WARD,TURNER,ALLEN,BLAKE14 rows selected.
转载于:https://www.cnblogs.com/xieweikai/p/6838264.html
Oracle函数之LISTAGG相关推荐
- [转载]oracle函数listagg的使用说明
工作中经常遇到很多需求是这样的,根据条件汇总某些字段,比如我遇到的是,我们公司有三个投资平台,同一个客户拿手机号在三个平台都注册了,但注册过的用户名不一样,显示的时候需要根据手机号显示所有注册过的名称 ...
- oracle函数listagg的使用说明(分组后连接字段)
关于oracle函数listagg的使用说明 工作中经常遇到客户提出这样的需求,希望在汇总合并中,能够把日期逐个枚举出来. 如图,原始数据是这样的: 客户希望能够实现这样的汇总合并: 那么通常我会使用 ...
- 使用oracle函数 LISTAGG 函数报错。ORA-00923: 未找到要求的 FROM 关键字
ORA-00923发生的原因之一是: LISTAGG(event, ':') WITHIN GROUP(ORDER BY opttime)函数中分隔符为英文分号. 这算是oracle函数的一个小BUG ...
- oracle中有关listagg函数的使用
oracle中有关listagg的使用 1. 作用 2. 语法 3. 实例 问题拓展 1. 作用 可以实现行转列,将多列数据聚合为一列,实现数据的压缩. 2. 语法 listagg(measure_e ...
- oracle wm_concat 替换函数,Oracle 10g无法使用listagg函数的替代解决方案[wm_concat]
LISTAGG函数介绍 LISTAGG函数是Oracle 11.2新增的函数,用于字符串拼接,11.2之前的版本无法使用,先来简单介绍一下listagg函数的使用 LISTAGG完整语法 以上是官方文 ...
- row number函数 oracle,oracle函数 ROW_NUMBER()
[语法]ROW_NUMBER() OVER (PARTITION BY COL1 ORDER BY COL2) [功能]表示根据COL1分组,在分组内部根据 COL2排序,而这个值就表示每组内部排序后 ...
- 三、Oracle 函数
一.Oracle 操作集 二.Oracle 数据类型 三.Oracle 函数 四.Oracle 视图 五.Oracle 序列 六.Oracle 同义词 七.Oracle 索引 八.Oracle PL/ ...
- mysql listagg函数_Oracle函数之LISTAGG
最近在学习的过程中,发现一个挺有意思的Oracle函数,它可实现对列值的拼接.下面我们来看看其具体用法. 最近在学习的过程中,发现一个挺有意思的Oracle函数,它可实现对列值的拼接.下面我们来看看其 ...
- mybatis可以用oracle,使用MyBatis调用oracle函数(基于注释)
我需要使用注解在MyBatis中调用Oracle函数.使用MyBatis调用oracle函数(基于注释) 我的映射: @Select("{ CALL #{outParam, jdbcType ...
最新文章
- java程序员遇到的问题_Java 程序员平时最常遇到的故障:系统OOM (一)
- 1所更名、3所新设!山西4所高校获批复
- SAP CRM文本配置里的Continue标签,到底控制了什么行为
- 德勤发布2021年度企业AI应用现状报告,AI驱动已成竞争必需品
- canvas实现动态小球碰撞
- Mybatis之select元素
- 解决ASUS P5GC-MX/1333声卡驱动不能正常安装的问题
- 一个不用背单词的高效英文学习法
- 教皇修改之后丢失的十天
- 胶囊网络之 Found a Reason for me? Weakly-supervised Grounded Visual Question Answering using Capsules论文笔记
- 随机打乱数据的几种方式
- java 下拉复选框_JAVA个人小程序GUI篇-收银(标签、按钮、复选框、下拉标、文本域、表格······)...
- 根据输入的银行卡号显示开户银行类型,并将银行卡号四位分隔
- 新风医疗集团就私有化交易达成最终合并协议;​康泰生物成功分离新冠德尔塔变异株 | 医药健闻...
- 未来科技的五大发展趋势
- Mendeley中WordPlugin问题
- 综述|姿态估计方法大盘点
- 一个域名价值怎么看 域名估值的标准是什么
- 天正如何批量导出坐标_cad中批量导出坐标的方法【AutoCAD教程】
- 什么是动态IP,动态IP服务怎么选?