Oracle10g中如何按顺序连接多行

2023-12-02

如果我有这样的数据:

GROUP  |  SEQUENCE  |  COMMAND
------------------------------
ONE    |     3      |  <message2>MESSAGE</message2>
ONE    |     1      |  <?xml version="1.0" encoding="UTF-8"?>
ONE    |     2      |  <message1>MESSAGE</message1>
TWO    |     2      |  <message2>MESSAGE</message2>
TWO    |     1      |  <?xml version="1.0" encoding="UTF-8"?>
........
TWO    |    10      |  <message9>MESSAGE</message9>

我怎样才能将命令连接成这样:

GROUP  |  COMMAND
-----------------
ONE    |  <?xml version="1.0" encoding="UTF-8"?>,<message1>MESSAGE</message1>,<message2>MESSAGE</message2>
TWO    |  <?xml version="1.0" encoding="UTF-8"?>,<message1>MESSAGE</message1>, .. ,<message9>MESSAGE</message9>

我在下面使用了这个查询,但命令列不按照其序列号排序:

SELECT GROUP, WM_CONCAT(COMMAND) AS COMMAND
     FROM (SELECT GROUP, SEQUENCE, COMMAND FROM TBL ORDER BY SEQUENCE)
     GROUP BY GROUP

//AND THIS

SELECT GROUP, WM_CONCAT(DISTINCT COMMAND) AS COMMAND
 FROM (SELECT GROUP, SEQUENCE, COMMAND FROM TBL ORDER BY SEQUENCE)
 GROUP BY GROUP

任何意见和建议将不胜感激。 ^_^


切勿使用WM_CONCAT. Read 为什么不在Oracle中使用WM_CONCAT函数?

看这个主题https://stackoverflow.com/a/28758117/3989608.

它没有记录,任何依赖于它的应用程序WM_CONCAT一旦升级到将无法工作12c因为它已经从最新的12c版本中删除了。

有很多方法可以做字符串聚合,取决于数据库版本。请参阅下面的几个示例:

11gR2

Use LIASTAGG:

SQL> SELECT grp,
  2    listagg(command, ',') WITHIN GROUP(
  3  ORDER BY seq) command
  4  FROM t
  5  GROUP BY grp;

GRP COMMAND
--- --------------------------------------------------------------------------------------------
ONE <?xml version=1.0 encoding=UTF-8?>,<message1>MESSAGE</message1>,<message2>MESSAGE</message2>
TWO <?xml version=1.0 encoding=UTF-8?>,<message2>MESSAGE</message2>,<message9>MESSAGE</message9>

SQL>

9i 及更高版本

Use ROW_NUMBER() and SYS_CONNECT_BY_PATH:

SQL> SELECT grp,
  2         LTRIM(MAX(SYS_CONNECT_BY_PATH(command,','))
  3         KEEP (DENSE_RANK LAST ORDER BY seq),',') command
  4  FROM   (SELECT grp,
  5                 command,
  6                 seq,
  7                 ROW_NUMBER() OVER (PARTITION BY grp ORDER BY seq) AS curr,
  8                 ROW_NUMBER() OVER (PARTITION BY grp ORDER BY seq) -1 AS prev
  9          FROM   t)
 10  GROUP BY grp
 11  CONNECT BY prev = PRIOR curr AND grp = PRIOR grp
 12  START WITH curr = 1;

GRP COMMAND
--- --------------------------------------------------------------------------------------------
ONE <?xml version=1.0 encoding=UTF-8?>,<message1>MESSAGE</message1>,<message2>MESSAGE</message2>
TWO <?xml version=1.0 encoding=UTF-8?>,<message2>MESSAGE</message2>,<message9>MESSAGE</message9>

SQL>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Oracle10g中如何按顺序连接多行 的相关文章

  • 删除每行列中重复的 GPS 坐标

    我有一列包含 GPS 坐标 每行都有一组地理多边形坐标 大多数线路都有重复的 GPS 坐标 一列中的经度和纬度完全重合 Example 多多边形 23 453411011874813 41 74245395132344 23 4539726
  • Web SQL 将数据插入多行

    我尝试在 Web SQL 数据库中一次将变量插入多行 但使用我所知的所有方法时 我收到错误 INSERT INTO tab a b VALUES v1 v2 v3 v4 gt gt could not prepare statement 1
  • MySQL 布尔模式匹配对中间词不返回任何内容

    我在 MySQL 数据库中使用 Match Against 时遇到问题 希望有人能提供帮助 这是我的数据库中的数据示例 id name 1 really bitter chocolate 2 soft cheese 当我运行此查询时 SEL
  • 如何动态创建表数据类型的变量?

    在以下查询中 select string 可以返回具有任何可能数据类型的任意数量的列和行 Execute immediate select string into v table variable 例如 select string 可以是
  • MYSQL从另一个表插入id

    我有以下疑问 我有 2 张桌子 id customers 1 alan 2 beth 3 john and id id customers value 1 1 bar 2 1 foo 3 2 baz 示例 我需要在第二个表中添加值 alfa
  • MySQL select with 语句

    我正在学习更多 SQL 并遇到了一个 问题 我有两个表 如下面的链接http www sqlfiddle com 2 403d4 1 http www sqlfiddle com 2 403d4 1 编辑 由于我这个周末所做的所有 SQL
  • 如何复制身份列中的数据?

    我有一张桌子identity列在一台服务器中 并且在另一台服务器中有一个具有相同结构的其他表 现在我想将所有数据从一个表复制到另一个表 但我无能为力 我已经创建了一个链接服务器 我用这个 insert into server databas
  • Bool类型返回规则

    我使用 dapper ORM 所以我使用两个规则Query
  • Mysql 更快的 INSERT

    好的 我有大约 175k 个 INSERT 语句 相当大的 INSERT 语句 例如 INSERT INTO gast ID Identiteitskaartnummer Naam Voornaam Adres Postcode Stad
  • SQL 查询 - 将查询中的日期格式更改为 DD/MM/YYYY

    我想要实现的目标相当简单 将一种日期格式转换为另一种日期格式 由此 Jan 30 2013 12 00 00 000AM对此 DD MM YYYY或者在这种情况下30 01 2013 但是 当它是该月的 1 号到 9 号时 日期格式缺少零并
  • 在 SQL 中用加号 (+) 显示正结果

    我有以下查询 SELECT CONVERT DECIMAL 11 1 SUM Column 1000 1 AS NAME FROM Table 我有 1000 1 的原因是我希望结果以千为单位显示并反转 负值作为正值 反之亦然 只有一位小数
  • 如何在 PL/SQL 中查找字符串中不同字符的数量和名称[重复]

    这个问题在这里已经有答案了 我对 PL SQL 很陌生 我需要获取字符串中不同字符的名称和计数 例如 如果我有一个字符串str helloexample 我需要获得不同字符的输出str i e heloxamp 我怎样才能做到这一点 您可以
  • plpgsql 中的伪加密() 函数采用 bigint

    我正在开发一个生成随机 ID 的系统 如答案 2 所示here https stackoverflow com questions 12575022 generating an instagram or youtube like ungue
  • SQLAlchemy:如何过滤日期字段?

    这是模型 class User Base birthday Column Date index True in database it s like 1987 01 17 我想在两个日期之间进行过滤 例如选择 18 30 年区间内的所有用户
  • Oracle PLSQL 将日期时间截断为 15 分钟块

    我想将我的数据聚合成 15 分钟的片段 一刻钟 为此 我编写了一些生成 15 分钟日期时间块的代码 SELECT TRUNC SYSDATE hh 0 25 24 ROWNUM 0 25 24 AS time start ROWNUM TR
  • Laravel - LIKE 运算符来搜索加密值

    我正在尝试在 Laravel 应用程序中实现一个搜索模块 可以按名称过滤用户 为了保护用户 name 列行在数据库上加密 我面临的问题是下面的查询总是返回 0 结果 我在搜索数据库之前对搜索输入值进行加密 patients DB selec
  • MySql - 自动完成

    我正在创建一个 Ajax 自动完成应用程序 并且想知道是否有一个 SQL 查询可以用于此目的 例如 如果有人键入 p 我想检索所有以 p 开头的单词 如果他们添加 e 检索所有以 pe 开头的单词 并继续这样 有人提出了下面的查询 但我认为
  • FROM 子句中子查询末尾随机字母的含义 - SQL

    我终于成功将两个sql sum查询的结果求和了 这家伙迈出了一小步 我的问题与代码中的最后一个字符 Z 有关 SELECT SUM hr FROM SELECT SUM amount AS hr FROM Try again dbo tue
  • Oracle SQL 查询日期格式

    我总是对 ORACLE SQL 查询中的日期格式感到困惑 并花几分钟时间去谷歌 有人可以向我解释当数据库表中有不同格式的日期时解决问题的最简单方法吗 例如 我有一个日期列为 ES DATE 保存的数据为 27 APR 12 11 52 48
  • INSERT INTO ... SELECT ... 是否始终按序号位置匹配字段?

    我的测试似乎证实了这一点 INSERT INTO a x y SELECT y x FROM b maps b y to a x 即字段仅按顺序位置匹配 而不按名称匹配 情况总是如此吗 即 我可以依赖这种行为吗 很遗憾 文档 http ms

随机推荐

  • Rails 随机记录生成器

    我问自己是否有一个gem或一种方法可以用随机数据生成大量记录 对模型有效 目标是使用数据库中的大量数据来测试我的应用程序 我在网上没有找到任何内容 但我没有使用正确的关键字 你知道类似的事情吗 您可以使用Faker宝石 并且 以下是创建 1
  • 如何将查询语句记录到Neo4j服务器,可能吗?

    我想将整个查询语句记录到 Neo4j 服务器 但是 在搜索 SO 和文档之后我没有成功 我发现这个问题 Neo4j 服务器上记录的剩余查询 但是更改这些配置设置并没有达到我所希望的效果 我在 Golang 工作并使用Go CQ库与 Neo4
  • 如何让 Twitter Bootstrap Accordion 保持一组开放?

    我正在尝试使用 Twitter 引导程序使用手风琴和折叠插件来模拟 Outlook 栏 到目前为止 我已经实现了折叠和手风琴工作 但它目前允许折叠所有部分 我想限制它 以便始终显示一个且仅一个 这是我正在研究的一个 http jsfiddl
  • 用于在 JSON 数组中查找元素的索引

    我有一个看起来像这样的表 CREATE TABLE tracks id SERIAL artists JSON INSERT INTO tracks id artists VALUES 1 name blink 182 INSERT INT
  • 我是否正确解析此 HTTP POST 请求?

    首先我要说的是 我正在使用twisted web框架 Twisted web的文件上传没有像我想要的那样工作 它只包含文件数据 而不包含任何其他信息 cgi parse multipart没有像我想要的那样工作 同样的事情 twisted
  • 如何从Android中的普通java类调用Activity类[重复]

    这个问题在这里已经有答案了 我有一个 noraml java 类 在该类的构造函数中称为 ReceivedChat java 我想调用 Android 的 Activity public class ReceivedChat String
  • Grid.MVC 与 ASP.NET MVC 5 兼容吗?

    在我开始搞乱一些不起作用的东西之前 Grid MVC 可以与 ASP NET MVC 5 一起使用吗 在 gridmvc codeplex com 上他们只写 MVC3 4 但我想知道是否有人尝试过 MVC5 你尝试过 但没有成功 试试这个
  • 有没有办法可以将 GeoFireStore 查询与普通 Firestore 查询结合起来?

    我想查询我存储在名为 Users 的集合中的用户 每个用户都有年龄和体重等字段 有没有办法可以通过距使用 GeoFire 运行搜索的用户的距离来查询用户 并将其与 FireStore 搜索查询结合起来 例如 我是一名用户 正在寻找 20 英
  • .js 文件适用于 Chrome 和 Firefox,但不适用于 IE

    当在 IE11 中测试我的网站时 它的某些部分不起作用 我相信问题出在我的 custom js 文件上 因为所有问题都链接到该 js 不过 该页面在 Chrome 和 Firefox 中运行良好 我在页面的页脚中加载名为 custom js
  • Firebase 查询是否可扩展

    在我的应用程序中 要检查注册时是否使用了电子邮件 和用户名 我使用这样的查询 let emailRef Firebase url https photocliq5622144 firebaseio com users emailRef qu
  • SwiftUI:“onDrop”覆盖层在 LazyVGrid 中不会消失?

    我正在测试 Asperi 对单元格重新排序的出色答案 SwiftUI 使用 onDrag 和 onDrop 对单个 LazyGrid 中的项目重新排序 我遇到的问题是 当我简单地进入拖动模式然后放置到位时 覆盖层不会重置 请参见单元格 3
  • 在 Django 中使用 fullCalendar

    有点像这里发布的问题的后续 Django 通过自定义模板标签使用用户输入修改数据 但自从提出这个问题以来 我决定采取不同的方法 正如你所知 我是个新手 所以请放轻松 我希望 Django 应用程序中有一个每周日历 显示数据库中的班次 以下是
  • 如何防止 PowerShell 中的变量注入?

    Ansgar Wiechers 对最近 PowerShell 问题的评论再次触发了我 DO NOT use Invoke Expression关于一个安全问题 我已经在脑海中思考了很长时间并且需要问 强烈的声明 参考调用表达式被认为是有害的
  • 右上角菜单选项

    I am not able to set the background image for the title bar i can only set color let me know what i have to change in th
  • 使用 Knockout 'foreach' 循环多维数组

    我有一个多维关联数组 this items ko observableArray name name1 viewable true children name name1 1 viewable true children name name
  • 如何在活动之间传递双数组(布尔[][])?

    我看不到将双布尔数组传递给另一个活动 我使用 putExtra 当我检索它并将其投射到boolean 它指出它无法投射并崩溃 然而 Boolean 是有效的 我该如何通过boolean 活动之间 如果您绝对需要一个 boolean 并且不能
  • C 静态变量初始化

    我学了一些 C 语言并发现了静态变量的解释 他们展示了这段代码 include
  • div 内的图像水平居中

    我正在尝试使用向上 向下箭头将图像设置为 div 的水平中心 我在这里阅读了一些教程和问题 但以下方法不起作用 img display block margin auto 它是用 Bootstrap 制作的 因此将部分集成在下面的代码片段中
  • 如何在Spring Security中编写自定义过滤器?

    我希望每个请求接收一些信息 所以我认为不要为每个请求提供一个函数并分别从请求中获取这些信息 最好有一个过滤器 所以每个请求都会通过这个过滤器 我就会得到我想要的 问题是 如何编写自定义过滤器 假设它不像任何预定义的 spring secur
  • Oracle10g中如何按顺序连接多行

    如果我有这样的数据 GROUP SEQUENCE COMMAND ONE 3