Oracle 将表的某一列的所有值用逗号隔开,去重后合并成一行

一、背景

最近在工作中,有个需求是要求在oracle统计查询的时候,将表的某一列的所有值用逗号隔开,去重后合并成一行。于是研究了一下listaggxmlagg 函数 用来合并数据

以下通过实例说明。

二、方法

1.不去重的两种方法

listagg函数

返回结果为varchar2格式的数据,即拼接后的字符串最大可以保存4000字节的数据,所以大于这个数据的字符串就会报ORA-01489 字符串连接的结果过长的错误。

xmlagg函数

查询结果过长,拼接的字符串长度过长大于4000字节,我们可以使用这个函数,函数返回结果为CLOB类型,大对象数据类型最大可以存储4GB的数据长度。

用法1:用某符号拼接列中所有值

SELECTLISTAGG(student_name, ',') WITHIN GROUP(ORDER BY student_name) listagg
FROMstudent_info t;

执行结果:

listagg
王一,陈二,张三,李四

用法2:按某列 分组,用指定符号拼接组内列中所有值

//方法1 LISTAGG
SELECTt.student_name,t.student_sexLISTAGG(student_name, ',') WITHIN GROUP(ORDER BY student_name) OVER( PARTITION BY student_sex) listagg
FROMstudent_info t;//方法2 xmlaggSELECTxmlagg(xmlparse(content t.student_name || ',' WELLFORMED) order by t.student_name).getClobval()     listagg
FROMstudent_info t;

执行结果:

student_namestudent_sexlistagg
王一王一,陈二
陈二王一,陈二
张三张三,李四
李四张三,李四

2.去重的方法

数据表

创建日期公司代码销售物品
20230718085055111苹果
20230718085055111香蕉
20230718090000111苹果
20230718090000112牙刷
20230718090000112牙刷

若不去重则显示数据为

公司代码        销售物品
111苹果,香蕉,苹果
112牙刷,牙刷

有多种去重方法,这边建议先去重再聚合

//distinct去重后,再聚合 拼接selectt.company_code ,LISTAGG(t.sale_name, ',') within group (order by  t.sale_name) OVER(PARTITION BY t.company_code ) LISTAGG from (selectdistinct s.sale_name,s.company_code fromsale_info s) t 

执行结果:

company_code      LISTAGG 
111苹果,香蕉
112牙刷

以上就是全部内容了,若有帮到你,那真是太好了!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/4486.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

安达发|高级计划与智能排程APS软件的发展史进程

从泰勒的科学管理理论出发,率先追求科学的管理理论和管理工具,在计算机成为企业日常管理的基本工具之后,信息系统已经成为提高工厂管理水平的重要支柱。 在工厂计划领域,开始了从MRP到MRPII再到ERP的演变过程。MRPII指的是制造…

自动化测试工具比传统测试工具的优势体现在哪里?

随着软件行业的快速发展和扩张,自动化测试工具在提高测试效率和质量方面起到了不可或缺的作用,那你知道自动化测试工具比传统测试工具的优势体现在哪里吗? 首先,自动化测试工具能够大大缩短测试周期。相比于传统手动测试&#xff…

Spring AOP知识点详解

Spring AOP是 Spring最核心的能力,那到底什么是AOP呢,今天了不起带大家了解一下。 AOP是什么 AOP(Aspect Oriented Programming):面向切面编程,是OOP(面向对象编程)的一个延续,其和OOP一样,也是一种编程思想&#xff0…

大模型时代,腾讯云“复制”腾讯|WAIC2023

点击关注 文|郝鑫 编|刘雨琦 刚过去的WAIC(世界人工智能大会)俨然成为了大模型厂商的成果汇报大会。 百度文心大模型升级到3.5版本,训练速度提升2倍,推理速度提升30倍;华为云发布盘古大模型3…

《无畏契约》游戏分析

文章目录 介绍游戏继承性《守望先锋》游戏美术对比游戏机制对比 《CSGO》游戏美术对比游戏机制对比 《英雄联盟》游戏美术对比游戏机制对比 《无畏契约》的优点《无畏契约》的缺点该游戏值得学习之处总结 介绍 《无畏契约(VALORANT)》是一款由拳头游戏&…

计算机vcruntime140.dll丢失的解决方法,重新安装教程

vcruntime140.dll是Microsoft Visual C Redistributable文件中的一个动态链接库(DLL)。这个文件是由Microsoft开发的,用于支持C编程语言的运行环境。vcruntime140.dll是Windows系统非常重要的文件,通常会被一些应用程序或游戏所需…

AR气象博物馆模拟体验提升青少年认知

国际气象节主要目的是唤起人们对气象工作的重视和热爱。近年来,极端天气频发,人们需要提高警惕,AR气象远程普利用ar技术特有的沉浸式的体感互动,通过模拟演练提升体验者的安全防范意识和求生技巧。 系统结合VR虚拟现实、AR增强现实…

准备WebUI自动化测试面试?这30个问题你必须掌握(二)

本文共有11000字,包含了后十五个问题,如需要前十五个问题,可查看文末链接~ 16. 在WebUI自动化测试中,你如何处理验证码或图像识别的问题? 1. 人工识别:一种简单但费时费力的方法是使用人工手动识别验证码。…

事件传播机制和事件委托

DOM事件流 DOM事件流(event flow )存在三个阶段:事件捕获阶段、处于目标阶段、事件冒泡阶段。事件捕获(event capturing):通俗的理解就是,当鼠标点击或者触发dom事件时,浏览器会从…

(学习笔记-TCP连接建立)TCP 为什么是三次握手?不是两次、四次?

常规回答:“因为三次握手才能保证双方具有接收和发送的能力” 原因一:避免历史连接 三次握手的首要原因是为了防止旧的重复连接初始化造成混乱。 假设:客户端先发送了SYN(seq90)报文,然后客户端宕机了,而且这个SYN报…

NOSQL简单实战

目录 实战一: 1、 string类型数据的命令操作: (1) 设置键值: (2) 读取键值: (3) 数值类型自增1: (4) 数值类型自减1&…

图像标注是什么?及其类型和应用

什么是图像标注? 图像标注是与您交互的许多人工智能产品的基础,并且是计算机视觉(CV)领域重要的过程之一。在图像标注过程中,数据标注员使用标签或元数据来标记AI模型学习识别的数据特征。然后,这些图像标…

《算法竞赛·快冲300题》每日一题:“小球配对”

《算法竞赛快冲300题》将于2024年出版,是《算法竞赛》的辅助练习册。 所有题目放在自建的OJ New Online Judge。 用C/C、Java、Python三种语言给出代码,以中低档题为主,适合入门、进阶。 文章目录 题目描述题解C代码Java代码Python代码 “ 小…

Triton_server部署学习笔记

下载镜像 docker pill http://nvcr.io/nvidia/tritonserver:22.07-py3 docker run --gpus all -itd -p8000:8000 -p8001:8001 -p8002:8002 -v /home/ai-developer/server/docs/examples/model_repository/:/models nvcr.io/nvidia/tritonserver:22.07-py3 docker exec -it a5…

Spring+SpringMvc+Mybatis整合小Demo

原始方式整合SSM 不使用spring-mybatis包 项目内容 整合ssm完成对account表新增和查询的操作 项目大体结构 创建mavenWeb项目 pom文件中引入依赖 spring核心、aspectj(aop)、spring-jdbc(jdbcTemplate)、spring-tx(事务)、 数据源:mysql、c3p0、mybatis my…

JVM 参数配置规范

废话不说,直接上干货!!! JVM 规范: 参数备注/参数释义交易规范JVM版本1.8.0_60以下,无法使用Pfinder 1.8.0_131之前,jvm无法感知docker的真实核数和内存大小,而是使用的宿主机的核…

vue2的 element 表格单元格合并

<template><div><el-table show-summary :summary-method"getSummaries" :span-method"objectSpanMethod" :data"tableData" row-key"id" ref"tableDom" border><el-table-column label"序号&quo…

Zookeeper集群下载安装并启动

前提&#xff1a;准备三台虚拟机 集群启动修改配置&#xff08;3台服务器都要执行&#xff09; 1、下载Zookeeper安装包 Zookeeper的下载地址&#xff1a; https://zookeeper.apache.org/releases.html https://archive.apache.org/dist/zookeeper 2、上传Zookeeper安装包 …

【NLP】小项目:基于transformer的文本摘要

一、说明 本博客的主要焦点是使用“变压器”的非常高级的接口,即拥抱面管道。使用此界面,您将看到我们只需 1 或 2 行代码即可总结文本。 回顾什么是文本摘要以及我们在哪里使用它。如何使用拥抱面转换器执行文本摘要(只需几行代码)二、什么是文本摘要? 文本摘要是将大型文…

【golang】12、gin 源码解析

文章目录 快速使用返回响应路由匹配pathqueryMultipart/Urlencoded Form 解析请求MultipartFrom MiddleWare github.com/gin-gonic/gin 是 golang 的 web 框架&#xff0c;其用字典树做路由匹配、支持中间件&#xff0c;本文介绍其源码实现。 快速使用 package mainimport (&…