listagg oracle10_HLOOKUP函数

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

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

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
)

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

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

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/196411.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • ES6中变量let的属性以及在for循环中的使用

    ES6中变量let的属性以及在for循环中的使用

  • 通俗讲解 同步、异步、阻塞、非阻塞 编程

    通俗讲解 同步、异步、阻塞、非阻塞 编程#真正意义上的异步IO是说内核直接将数据拷贝至用户态的内存单元,再通知程序直接去读取数据。#select/poll/epoll都是同步IO的多路复用模式1.同步和异步#同步和异步关注的是消息通信机制#所谓同步,就是在发出一个*调用*时,没得到结果之前,该*调用*就不返回。但是一旦调用返回就得到返回值了,*调用者*主动等待这个*调用*的结果#所谓异步,就是在发出一个*调用*时,这个*调用*就直接返回了,不管返回有没有结果。当一个异步过程调用发出后,*被调用者*.

  • Keras学习率调整

    Keras学习率调整Keras提供两种学习率适应方法,可通过回调函数实现。1.LearningRateSchedulerkeras.callbacks.LearningRateScheduler(schedule)该回调函数是学习率调度器.参数schedule:函数,该函数以epoch号为参数(从0算起的整数),返回一个新学习率(浮点数)代码importkeras.backenda…

  • dos命令打开文件夹_dos命令开启无线网络

    dos命令打开文件夹_dos命令开启无线网络如何用dos命令查看文件?首先通过cd进入文件所在目录,然后执行start命令即可。【startfileName】:打开文件

    2022年10月14日
  • 第十五章《键的管理》

    第十五章《键的管理》

  • OA工作流实现的一点经验

    OA工作流实现的一点经验最近给学生布置.NET毕业设计,为了提高学生的能力就布置了一个OA系统,布置后发现OA其实也不是哪么的难做,其中最难做的应该要算工作流哪部分,于是我就给学生写了一个工作流的例子.其实在J2EE的开源里面就有工作流开源项目大家可以参考http://www.open-open.com

发表回复

您的电子邮箱地址不会被公开。

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