Oracle 10g 中的聚合字符串连接[重复]

2023-12-10

我看到上一个问题,其中表格包含“否”和“名称”列,以及其他与数字列分组的问题,但无法实现为我的案例提供的答案。我需要做同样的事情,但是使用非数字分组。源表是 tbl1,包含以下列:

POD    Name
---    -----
North  Rony
North  James
North  Aby
South  Sam
South  Willy
West   Mike

我需要做这个聚合:

POD    Name
---    -----
North  Aby,James,Rony
South  Sam,Willy
West   Mike

由于“POD”是非数字的,Msyma、Dinup 和 chetan 之前的解决方案似乎对我不起作用。

我不知道如何从他们对这些要求的回答中进行知识转移。

理想的查询是

SELECT POD, AGGREGATESTRING(Name)
FROM tbl1
GROUP BY POD

在理想的示例中,AGGREGATESTRING 不会对人员姓名进行排序,但我认为我可以在需要时插入“ORDER BY”。


Oracle 11g 有一个简洁的函数 LISTAGG,这几乎正是您想要的,但是由于您使用的是 10g,所以您无法使用该函数(除非您决定升级)。

如果出于某种原因您不希望(或由于任何原因不能)升级到 11g,我建议您查看 10g 上可用的 LISTAGG 的一些替代方案。

您可以查看一些建议的替代方案here

快速调整建议的替代方案之一以适应您的案例场景:

WITH Q AS
(
    SELECT 'North' POD, 'Rony' NAME FROM DUAL  UNION ALL
    SELECT 'North',     'James'     FROM DUAL  UNION ALL
    SELECT 'North',     'Aby'       FROM DUAL  UNION ALL
    SELECT 'South',     'Sam'       FROM DUAL  UNION ALL  
    SELECT 'South',     'Willy'     FROM DUAL  UNION ALL
    SELECT 'West',      'Mike'      FROM DUAL
)
SELECT   POD,
         RTRIM(
            XMLAGG (XMLELEMENT(e, name||',') ORDER BY name).EXTRACT('//text()'),
            ','
         ) AS name
    FROM q
GROUP BY POD;

但请记住,这不是实际的解决方案,因为您必须根据您的表(而不是虚拟 DUAL 表)等对其进行定制...

您的解决方案可能看起来类似于:

SELECT   POD,
         RTRIM(
            XMLAGG (XMLELEMENT(E, NAME||',') ORDER BY NAME).EXTRACT('//text()'),
            ','
         ) AS NAME
    FROM tbl1
GROUP BY POD;

如果你想改变分隔符,你可以在这部分中用逗号来改变它:

(E, NAME||',')

RTRIM 只是为了从连接字符串的末尾剪掉尾随逗号,如果您不被尾随逗号打扰,您可以省略 RTRIM 函数以保持可读性。

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

Oracle 10g 中的聚合字符串连接[重复] 的相关文章

  • 在 PL/SQL 中将绑定变量与动态 SELECT INTO 子句结合使用

    我有一个关于 PL SQL 中的动态 SQL 语句中可以使用绑定变量的问题 例如 我知道这是有效的 CREATE OR REPLACE FUNCTION get num of employees p loc VARCHAR2 p job V
  • 如何查找当前数据库类型

    我们有一个 SQL 脚本可以在多种类型的数据库上执行 是否可以获取正在执行 SQL 脚本的当前数据库的类型 注意 我们不能使用非标准 SQL 即 TSQL 等 不 ANSI SQL 中没有任何关于确定数据库供应商的内容
  • 在 MySQL 中对整数字段运行带引号的数字(字符串)查询时会发生哪些复杂情况

    在 SQL 中 不应引用整数 因为如果引用 它将是一个字符串 但我很好奇如果我这样做会出现什么问题 并发症 例如 SELECT FROM table WHERE id 1 正确的 vs SELECT FROM table WHERE id
  • MySql 5.7 ORDER BY 子句不在 GROUP BY 子句中并且包含非聚合列

    我试图在不禁用 my ini 中的 only full group by 的情况下弄清楚 这是我的查询 SELECT p title COUNT t qty AS total FROM payments t LEFT JOIN produc
  • ora-04091 表正在发生变化-

    我正在使用一个函数来比较表 1 和表 2 中的所有列并返回 Y 或 N 在此基础上 我将更新我的表 1 但是当我运行合并语句时 它显示错误 ora 04091 Table1 正在发生变化 触发器 函数可能看不到它 我怎样才能解决这个问题 C
  • 将 .MDF SQL Server 数据库与 ASP.NET 结合使用与使用 SQL Server

    我目前正在 ASP NET MVC 中编写一个网站 我的数据库 其中还没有任何数据 只有正确的表 使用 SQL Server 2008 我已将其安装在我的开发计算机上 我使用服务器资源管理器从应用程序连接到数据库 然后使用 LINQ to
  • 有没有办法阻止 SQL Express 2008 空闲?

    我使用 SQL Express 2008 作为 Web 应用程序的后端 问题是 Web 应用程序是在工作时间使用的 因此有时在午餐或休息时间 如果 20 分钟内没有用户登录 SQL Express 将进入空闲状态模式并释放其缓存 我知道这一
  • SQL:如何在按部分分组的查询中使用子查询?

    如何在按部分分组的查询中使用子查询 我使用 SQL Server 2008 R2 和 Delphi 2010 我收到此错误 Cannot perform an aggregate function on an expression cont
  • 只获取倒数第二条记录 - mysql-query

    我有一个如下表记录 my table id rating description 1 0 0 bed 2 1 0 good 3 0 0 bed 4 1 0 good 5 0 0 bed 6 0 0 bed 7 0 0 bed 现在我通过评级
  • 需要按天分割日期时间范围

    我有一个需要根据日期时间拆分的表 输入表 ID Start End A 2019 03 04 23 18 04 2019 03 04 23 21 25 A 2019 03 04 23 45 05 2019 03 05 00 15 14 所需
  • 检查两个“select”是否相等

    有没有办法检查两个 非平凡的 选择是否等效 最初我希望两个选择之间有形式上的等价 但是答案在证明 sql 查询等价性 https stackoverflow com questions 56895 proving sql query equ
  • 如何在 Oracle PLSQL 中提交单个事务

    我需要编写一个 PL SQL 过程 在这个过程中 我需要在其自己的事务范围内调用另一个过程 并提交它 无论主事务是否失败或提交 换句话说 我需要类似的东西REQUIRES NEW交易传播 就像是 procedure mainProcedur
  • MySQL中如何声明变量?

    如何在mysql中声明一个变量 以便我的第二个查询可以使用它 我想写一些类似的东西 SET start 1 SET finish 10 SELECT FROM places WHERE place BETWEEN start AND fin
  • JDBC插入实数数组

    我试图将一个真实的数组插入到 postgresql 数组中 该表的定义是 String sqlTable CREATE TABLE IF NOT EXISTS ccmBlock sampleId INTEGER block REAL 插入内
  • 在 SQL Server 上执行分页的最佳方式是什么?

    我有一个数据库超过200万记录 我需要执行分页以在我的 Web 应用程序上显示 该应用程序每页必须有 10 条记录DataGrid 我已经尝试使用ROW NUMBER 但是这种方式会选择所有 200 万条记录 然后只得到 10 条记录 我也
  • H2 用户定义的聚合函数 ListAgg 不能在第一个参数上使用 DISTINCT 或 TRIM()

    所以我有一个 DB2 生产数据库 我需要在其中使用可用的函数 ListAgg 我希望使用 H2 的单元测试能够正确测试此功能 不幸的是H2不直接支持ListAgg 但是 我可以创建一个用户定义的聚合函数 import java sql Co
  • 从 Getdate() 获取时间

    我想采取Getdate 结果 例如 2011 10 05 11 26 55 000 into 11 26 55 AM 我看过其他地方并发现 Select RIGHT CONVERT VARCHAR GETDATE 100 7 这给了我 11
  • 如何使用 SQL Server 2008 将行复制到同一个表中

    A 到目前为止我的方式 sqlCommand CommandText INSERT Table1 column1 column2 column3 SELECT column1 column2 column3 FROM Table1 WHER
  • 如何获取自定义订单的结果? [关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 代替ASC or DESC 我希望我的查询结果采用特定的自定义顺序 例如 如果我想要的结果不是 A B C D 而是 P A L H 该怎么
  • SQL 更新 - 更新选定的行

    我正在使用 SQL Server 2008 我有一个名为MYTABLE有两列 ID STATUS 我想编写一个存储过程来返回其记录STATUS是 0 但是这个存储过程必须更新STATUS返回行数为 1 如何在单个查询中执行此选择和更新操作

随机推荐

  • 如何在 Windows 8 风格应用程序中将对象从一个 Frame 传递到另一个 Frame

    我有一个问题 我现在无法弄清楚 我正在尝试开发一个 Windows 8 风格的应用程序 但我一直无法实现此功能 我有一个主窗口其中包含一个列表框和一个按钮 可以说添加按钮 当我单击按钮时 我导航到一个新页面 可以说添加客户页面与 this
  • Rails 5 - JS 无法在生产环境中工作(仅限)

    我正在挣扎 我有 Rails 5 应用程序 在我的 app assets javascripts 文件夹中包含一系列 js 文件 这些文件中的js在开发环境中工作得很好 但是当我在heroku上发布时 它停止工作 我可以从 chrome 检
  • 如何在常规 PHP 脚本中继续 CakePHP 3 会话?

    我的情况如下 我有一个 cakephp 项目和一个在同一服务器上运行的单独的纯 php 脚本 当我使用客户端浏览器连接到 cakephp 项目时 它会按预期建立一个会话 现在我想用我的纯 PHP 脚本继续会话数据 我再次使用相同的客户端浏览
  • CSS规则选择不包含元素的元素

    我有一堆看起来像的元素 div div class head div div class footer div div 除了其中一些没有页脚元素 只有一个头部 我想给没有页脚的元素一个底部边框 我希望有类似的事情 hi hasno foot
  • 从地理编码对象获取纬度

    我想从地理编码器返回的结果对象中获取纬度和经度
  • 如何检测用户是否单击了“不允许访问摄像头”

    我正在使用一个UIImagePicker向用户展示相机来拍摄将在应用程序中使用的照片 我的问题是 用户第一次打开图像选择器时 会出现一条提示 我的应用程序想要访问您的相机 有两个选项 不允许和确定 我的要求是 当用户单击 不允许 时 图像选
  • 我可以将 Excel 组合框设置为默认值吗?

    我的组合框 名为ddDatabase 可以具有两个值之一 这两个值是从单独工作表中的表中提取的 但是 当我打开 Excel 文件时 这两个值都没有被选择 相反 组合框显示为空 有什么方法可以明确地将特定值设置为默认值吗 经过一些进一步的测试
  • 通过带分隔符的字符串访问多维数组

    假设我有一个像这样的多维数组 我想通过传递像这样的字符串来访问数组元素 test1 test2 test3 到一个函数 该函数依次调用数组元素 我可以用eval 将字符串替换为 调用 array test2 test3 但我想知道是否有一种
  • 数据库设计 - 为用户存储积分的方法

    只是寻找一些有关如何为此进行数据库设计的建议 在我的网站上 用户可以通过执行不同的活动获得积分 目前 我有 3 项奖励积分的活动 但设计必须具有可扩展性 我也可以添加其他奖励积分的活动 所以今天 用户获得积分 1 当他添加一个新商店时 他获
  • 如何使用泛型 Go 实例化类型参数的非零指针?

    现在类型参数可用golang go master 我决定尝试一下 看来我遇到了在中找不到的限制类型 参数 提案 或者我一定错过了 我想编写一个函数 它返回带有接口类型约束的泛型类型值的切片 如果传递的类型是带有指针接收器的实现 我们如何实例
  • 如何取消从 Git Bash 克隆 Git 存储库?

    我目前正在使用 Git Bash 克隆一个拥有超过 100 000 次提交的大型存储库 克隆过程已经持续了半个多小时 还没有完成对象的接收 是否可以取消git clone来自 Git Bash 的命令 作为参考 我在 Windows 7 P
  • 在渲染 JS canvas 之前加载图像

    我正在编写一个简单的游戏来学习 JS 并且在此过程中我正在学习 HTML5 所以我需要在画布上绘制东西 这是代码 let paddle new Paddle GAME WIDTH GAME HEIGHT new InputHandler p
  • 应用程序窗口预计在应用程序启动结束时有一个根视图控制器

    当我的应用程序启动时出现上述错误 以下代码来自我的 AppDelegate h 文件 import
  • 如何导入数据文件进行UFT API测试?

    我正在开发一个项目 需要在运行时动态导入测试数据并运行与测试数据对应的API测试 我尝试使用 XMLload 直接从 xml 请求加载 这似乎运作良好 但就像 GUI 测试一样 我们导入测试数据 我希望 API 测试也一样 我可以动态地从外
  • SVG - 从中​​心重复缩放路径(脉动)

    我有一个中心点为 100 100 的 svg 图形
  • 从类或实例设置属性时的查找过程是什么?

    Python 简而言之描述了从类获取属性时的查找过程 例如cls name以及从实例获取属性时的查找过程 例如obj name 但我不确定何时设置属性 设置属性 请注意 属性查找步骤仅按照刚刚描述的方式发生 当您引用属性时 而不是当您绑定属
  • 使用vtd-xml解析xml文件

    如何在 java 或 C 中使用 vtd xml 解析如下所示的 xml 文件
  • IE11 预览版中未定义“WebForm_DoPostBackWithOptions”

    IE11来了 我刚刚安装了开发者预览版 但是 如果我运行一些 Web 应用程序并收到错误WebForm DoPostBackWithOptions未定义 当我玩自动回发时弹出错误DropDownList 而且之前IE10好像也有类似的问题
  • Postgres 自然排序依据

    我在 postgres 中的一列中遇到了排序问题 其中包含诸如版本之类的值 版本因字符而异 其值如下 无序 1 2 1 3 1 10 1 1 9 我如何按自然顺序排序 以便当我发布时SELECT version FROM TABLE A O
  • Oracle 10g 中的聚合字符串连接[重复]

    这个问题在这里已经有答案了 我看到上一个问题 其中表格包含 否 和 名称 列 以及其他与数字列分组的问题 但无法实现为我的案例提供的答案 我需要做同样的事情 但是使用非数字分组 源表是 tbl1 包含以下列 POD Name North R