Oracle中分组后拼接分组字符串[文].pdf
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
Oracle 中分组后拼接分组字符串 在 Oracle 中,分组后拼接分组字符串是一种常见的操作,用于将分组后的多条记录的某字段进行拼接。下面我们来详细介绍如何实现这种操作。 创建一个测试表 `test`,该表包含三个字段:`NO`、`VALUE`、`NAME`。然后,插入一些数据以便进行测试。 接下来,我们使用一个 SQL 语句来实现分组后拼接分组字符串。该语句可以分为三部分: 第一部分是最内层的 SQL,用于按 `NO` 和 `VALUE` 排序,并列出行号: ```sql select a.No, a.Value, a.Name, row_number() over(order by a.No, a.Value desc) rnFirst from Test a; ``` 这部分的结果如下: | NO | VALUE | NAME | RNFIRST | | --- | --- | --- | --- | | 1 | d | 测试 4 | 1 | | 1 | c | 测试 3 | 2 | | 1 | b | 测试 2 | 3 | | 1 | a | 测试 1 | 4 | | 2 | e | 测试 5 | 5 | | 4 | g | 测试 7 | 6 | | 4 | f | 测试 6 | 7 | 第二部分是外层的 SQL,用于根据 `NO` 分区,取出当前行对应的下一条记录的行号字段: ```sql select No, Value, Name, rnFirst, lead(rnFirst) over(partition by No order by rnFirst) rnNext from (select a.No, a.Value, a.Name, row_number() over(order by a.No, a.Value desc) rnFirst from Test a) tmpTable1; ``` 这部分的结果如下: | NO | VALUE | NAME | RNFIRST | RNNEXT | | --- | --- | --- | --- | --- | | 1 | d | 测试 4 | 1 | 2 | | 1 | c | 测试 3 | 2 | 3 | | 1 | b | 测试 2 | 3 | 4 | | 1 | a | 测试 1 | 4 | NULL | | 2 | e | 测试 5 | 5 | NULL | | 4 | g | 测试 7 | 6 | 7 | | 4 | f | 测试 6 | 7 | NULL | 第三部分是使用 `sys_connect_by_path` 函数与 `start` 递归实现分组后拼接分组字符串: ```sql select No, ltrim(max(sys_connect_by_path(Value, ';')), ';') as Value, ltrim(max(sys_connect_by_path(Name, ';')), ';') as Name from (select No, Value, Name, rnFirst, lead(rnFirst) over(partition by No order by rnFirst) rnNext from (select a.No, a.Value, a.Name, row_number() over(order by a.No, a.Value desc) rnFirst from Test a) tmpTable1) tmpTable2 start with rnNext is null connect by rnNext = prior rnFirst group by No; ``` 最终的结果如下: | NO | VALUE | NAME | | --- | --- | --- | | 1 | a;b;c;d | 测试 1; 测试 2; 测试 3; 测试 4 | | 2 | e | 测试 5 | | 4 | f;g | 测试 6; 测试 7 | 本文介绍了如何在 Oracle 中使用 `sys_connect_by_path` 函数与 `start` 递归实现分组后拼接分组字符串。该方法可以应用于各种数据分析和报表生成场景。
- 粉丝: 7
- 资源: 14万+
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- (源码)基于Spring Boot框架的博客管理系统.zip
- (源码)基于ESP8266和Blynk的IR设备控制系统.zip
- (源码)基于Java和JSP的校园论坛系统.zip
- (源码)基于ROS Kinetic框架的AGV激光雷达导航与SLAM系统.zip
- (源码)基于PythonDjango框架的资产管理系统.zip
- (源码)基于计算机系统原理与Arduino技术的学习平台.zip
- (源码)基于SSM框架的大学消息通知系统服务端.zip
- (源码)基于Java Servlet的学生信息管理系统.zip
- (源码)基于Qt和AVR的FestosMechatronics系统终端.zip
- (源码)基于Java的DVD管理系统.zip