Oracle把单行数据拆分成多行

news2024/11/16 7:42:12

背景:把接收人[JSRID]拆分为多行,接收人是存在一个字段中,以逗号隔开,每次会议的接收人数量不一

建表语句:

CREATE TABLE "HYTZGGZS_HYTZGGXXTJ" (
  "WF_ORUNID" VARCHAR2(255 BYTE) VISIBLE,
  "WF_DOCCREATED" VARCHAR2(255 BYTE) VISIBLE,
  "HYMC" VARCHAR2(255 BYTE) VISIBLE,
  "HYDD" VARCHAR2(255 BYTE) VISIBLE,
  "HYKSSJ" VARCHAR2(255 BYTE) VISIBLE,
  "HYJSSJ" VARCHAR2(255 BYTE) VISIBLE,
  "JSRID" VARCHAR2(255 BYTE) VISIBLE
);

测试数据:

INSERT INTO "HYTZGGZS_HYTZGGXXTJ" ("WF_ORUNID", "WF_DOCCREATED", "HYMC", "HYDD", "HYKSSJ", "HYJSSJ", "JSRID") VALUES ('fec65a570c0be04ecf0b2140a74d7e2fd646', '2023-06-05 21:19', '测试会议1', '第一会议室', '2023-06-05 08:30', '2023-06-06 11:16', '123432,123003,123005,123007,123008,123013,620040,123010,123020,123150,123177,123211,123043,123429,123411,123059,123426,123031,123178,123412,123326,123016,123393,123030,123212,123247,123149,123080');
INSERT INTO "HYTZGGZS_HYTZGGXXTJ" ("WF_ORUNID", "WF_DOCCREATED", "HYMC", "HYDD", "HYKSSJ", "HYJSSJ", "JSRID") VALUES ('8f3049c80a9dd0424c08336017de5ae03eb4', '2023-06-07 11:00', '测试会议2', '第二会议室', '2023-06-07 15:00', '2023-06-07 15:59', '123010,123150,123059,123016,123080,123327,123428,123412,123032');
INSERT INTO "HYTZGGZS_HYTZGGXXTJ" ("WF_ORUNID", "WF_DOCCREATED", "HYMC", "HYDD", "HYKSSJ", "HYJSSJ", "JSRID") VALUES ('e80e42820c5760411d09e140403cacd361ac', '2023-06-10 09:08', '测试会议3', '第三会议室', '2023-06-12 14:30', '2023-06-12 15:30', '123432,123003,123005,123006,123007,123008,123013,123051,620040,123010,123150,123429,123043,123431,123059,123426,123031,123178,123412,123020,123211,123149,123247,123393,123326,123016');
INSERT INTO "HYTZGGZS_HYTZGGXXTJ" ("WF_ORUNID", "WF_DOCCREATED", "HYMC", "HYDD", "HYKSSJ", "HYJSSJ", "JSRID") VALUES ('ec1843d205468046e20bb3d0485cbf8f6a82', '2023-06-13 15:25', '测试会议4', '第四会议室', '2023-06-14 14:30', '2023-06-14 15:23', '123010,123020,123177,123211,123248,123022,123149,123247,123394,123393,123380,123326,123412');
INSERT INTO "HYTZGGZS_HYTZGGXXTJ" ("WF_ORUNID", "WF_DOCCREATED", "HYMC", "HYDD", "HYKSSJ", "HYJSSJ", "JSRID") VALUES ('3cde3c5c09cf40432d0bc0d007b5289c8603', '2023-06-14 08:25', '测试会议5', '第五会议室', '2023-06-14 16:30', '2023-06-14 17:25', '123010,123020,123177,123211,123248,123022,123149,123247,123394,123393,123380,123326,123412');

 预期结果:

解决方法:

使用递归查询(Recursive Subquery):

首先,初始查询从源表中选择第一个接收人,并赋予一个行号(RN)。然后,递归部分将从上一行的行号开始查找下一个接收人,并继续增加行号。递归过程会一直执行,直到没有更多的接收人可以拆分。

 sql如下:

WITH CTE (WF_ORUNID, HYMC, HYDD, HYKSSJ, HYJSSJ, JSRID, SSYH, RN) AS (
  SELECT WF_ORUNID, HYMC, HYDD, HYKSSJ, HYJSSJ, JSRID,
         REGEXP_SUBSTR(JSRID, '[^,]+', 1, 1) AS SSYH,
         1 AS RN
  FROM HYTZGGZS_HYTZGGXXTJ
  UNION ALL
  SELECT WF_ORUNID, HYMC, HYDD, HYKSSJ, HYJSSJ, JSRID,
         REGEXP_SUBSTR(JSRID, '[^,]+', 1, RN + 1) AS SSYH,
         RN + 1 AS RN
  FROM CTE
  WHERE REGEXP_SUBSTR(JSRID, '[^,]+', 1, RN + 1) IS NOT NULL
)
SELECT WF_ORUNID, HYMC, HYDD, HYKSSJ, HYJSSJ, SSYH
FROM CTE
ORDER BY WF_ORUNID, RN;

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

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

相关文章

图像增强之图像锐化(边缘增强)之prewitt算子

note matx (-1,0,1;0,0,0;-1,0,1) maty (-1,-1,-1;0,0,0;1,1,1) code // 图像增强之图像锐化(边缘增强)之prewitt算子 void GetPrewittMat(Mat& prewittMatX, Mat& prewittMatY) {prewittMatX (Mat_<int>(3,3) << -1,0,1,0,0,0,-1,0,1);prewittMatY…

linux系统Nginx服务页面优化

文章目录 一、Nginx服务优化1.隐藏版本号2.日志分割3.设置页面压缩4.配置网页缓存时间5.设置连接超时6.Nginx并发设置优化&#xff08;更改进程数&#xff09;7.修改用户与组8.配置防盗链 总结 一、Nginx服务优化 1.隐藏版本号 隐藏Nginx版本号&#xff0c;以避免泄露Nginx的…

使用QFIL刷机步骤

目录 0.注意 1.确认是否出现端口 2. 使用abd命令开启下载端口 3.选择生成类型 4.配置为UFS 5.选择文件 6.加载文件 7.点击Download下载 0.注意 连接手机与电脑时需要手机是开机状态&#xff0c;否则连接不上 操作过程中不能对手机进行任何操作 若操作中未选择&#xff1a…

Python巧解数字变换问题,有点意思(65)

小朋友们好&#xff0c;大朋友们好&#xff01; 我是猫妹&#xff0c;一名爱上Python编程的小学生。 和猫妹学Python&#xff0c;一起趣味学编程。 今日主题 如何用Python解决数字变换问题 比如&#xff1a; 对于一对正整数a和b&#xff0c;对a只能进行加1&#xff0c;减1…

chatgpt赋能python:Python计算器编程:从入门到精通

Python计算器编程&#xff1a;从入门到精通 随着计算机技术的不断发展&#xff0c;计算器已经成为了我们日常生活中必不可少的工具。Python是一种简单易学的编程语言&#xff0c;也是一种十分适合编写计算器程序的语言。 为什么选择Python编写计算器程序&#xff1f; Python…

网络安全合规-ISO 27701

ISO 27701是什么&#xff1f; 是ISO 27001和 ISO 27002的扩展内容&#xff0c;对建立、实施、维护和持续改进隐私信息管理系统&#xff08;PIMS&#xff09;的各项要求做出了规定&#xff0c;是首部针对隐私信息管理的国际标准。该标准概述了适用于个人可识别信息控制者和处理者…

Cesium中,在shader里访问顶点法向

在shader中访问顶点法相 前提条件&#xff1a;使用cesium内部的geometry&#xff0c;非自定义的geometry&#xff0c;比如BoxGeometry。 构造Geometry时&#xff0c;需要指定vertexFormat里面包含NORMAL,这样在构造Geometry时&#xff0c;Cesium会自动生成顶点法向。在默认情况…

idea打的包字符集为GBK

1.最近对接一个打印机厂家的机器&#xff0c;他们对与打印数据要求字符集是UTF-8的&#xff0c;做完程序在自己idea上运行是是能够打印的&#xff0c;但是打包后&#xff0c;就不能够打印了。然后问了设备方是否是他们机器的原因&#xff0c;后面他们问了我这报错码&#xff0c…

CSS选择器总结

作者&#xff1a;爱塔居 专栏&#xff1a;JavaEE​​​​​ 作者简介&#xff1a;大三学生&#xff0c;希望和大家一起进步&#xff01; 文章目录 文章目录 一、CSS选择器的概念 二、基础选择器 2.1 标签选择器 2.2 类选择器 2.3 id选择器 2.3 通配符选择器 三、复合选择器 3.1…

【mysql环境】mysql的多种安装方法、环境配置总结

目录 第一步&#xff1a;mysql安装方法 方法一&#xff1a; 方法二&#xff1a; 方法三&#xff1a; 第二步&#xff1a;配置环境变量 第三步&#xff1a;验证是否配置成功 第一步&#xff1a;mysql安装方法 方法一&#xff1a; 下载MSI安装程序&#xff0c;进行mysql的…

解决多ffmpeg环境冲突问题

解决多ffmpeg环境冲突问题 问题描述&#xff1a; 使用make安装了ffmpeg-5.1&#xff0c;安装目录目录位于/usr/loacl/ffmpeg&#xff0c;但是使用ffmpeg -version命令出来的版本是4.3&#xff0c;如下图所示&#xff1a; 解决方案&#xff1a; 可以使用以下命令来确定正在…

redis源码之:扩容后的dictScan遍历顺序与JDK的concurrentHashMap 扩容机制

进入正题前&#xff0c;先来复习下关于2次幂的mod运算 设n为2次幂&#xff0c;数a mod n 等价于 a & n-1 从二进制来看&#xff0c;相当于余数为a省去n最高位左侧的所有位(含最高位)&#xff0c;保留n右侧所有低位即为余数 如&#xff1a;a 7(0000_0111),n4(0000_0100),通…

Linux挂载详解

Linux 系统中“一切皆文件”&#xff0c;所有文件都放置在以根目录为树根的树形目录结构中。在 Linux 看来&#xff0c;任何硬件设备也都是文件&#xff0c;它们各有自己的一套文件系统&#xff08;文件目录结构&#xff09;。 因此产生的问题是&#xff0c;当在 Linux 系统中使…

高考完,报了个嵌入式专业~~

正文 大家好&#xff0c;我是bug菌~ 最近高考成绩陆续公布&#xff0c;也是看到了一家欢喜一家忧心&#xff0c;确实像我们在外面打拼过的这群人&#xff0c;就深有体会:"高考确实是人生的一道分水岭"。 不过今天这里主要是介绍一下嵌入式行业相关的一些专业学校&…

一文掌握设计模式(定义+UML类图+应用)

一、引子 从学编程一开始就被告知&#xff0c;要想做一名优秀的程序员两大必要技能&#xff1a;1.源码阅读(JDK、C等底层语言封装) 2.设计模式(使用某种语言优雅的落地典型场景功能)。一般随着工作年限的增长&#xff0c;被迫对底层语言/框架源码阅读的越来愈多&#xff0c;但是…

软件的演练场景编排的主要作用是什么?

在软件开发过程中&#xff0c;演练场景编排是一种重要的方法&#xff0c;旨在提供一个模拟真实环境的平台&#xff0c;帮助开发团队和用户测试和验证软件的功能、性能和适应性&#xff0c;那软件的演练场景编排的主要作用是什么&#xff1f; 软件演练场景编排是指通过创建特定的…

【Vue2.0源码学习】实例方法篇-数据相关方法

文章目录 0. 前言1. vm.$watch1.1 用法回顾1.2 内部原理 2. vm.$set2.1 用法回顾2.2 内部原理 3. vm.$delete3.1 用法回顾3.2 内部原理 0. 前言 与数据相关的实例方法有 3 个&#xff0c;分别是vm.$set、vm.$delete和vm.$watch。它们是在stateMixin函数中挂载到Vue原型上的&am…

MMDeploy SDK使用记录(ncnn)

参考&#xff1a;mmpose/projects/rtmpose at main open-mmlab/mmpose GitHub MMDeploy 提供了一系列工具&#xff0c;帮助我们更轻松的将 OpenMMLab 下的算法部署到各种设备与平台上。目前&#xff0c;MMDeploy 可以把 PyTorch 模型转换为 ONNX、TorchScript 等和设备无关的…

RabbitMQ 能保证消息可靠性吗

系列文章目录 消息队列选型——为什么选择RabbitMQ RabbitMQ 五种消息模型 RabbitMQ 能保证消息可靠性吗 系列文章目录前言一、消息可靠性的定义二、几种不可靠的场景三、防意外丢失1. 消息持久化2. 队列持久化3. 发布确认3.1 简单发布确认3.2 批量发布确认3.3 异步发布确认 4…

Vector - CAPL - CAPL入门 - 01

前面已经介绍了很多CAPL相关的函数极其应用&#xff0c;今天CAPL能够完成的功能来介绍在车载网络测试中都能够帮助测试工程师完成哪些工作&#xff1f;让我们对它有一个最基础的认识。 CAPL在总线中的应用 > 分析特定消息或特定数据 > 分析数据流量 > 创建和修改工具…