首页 > 数据库 > mysql教程 > 如何使用 LISTAGG 连接 Oracle SQL 中多行的列值?

如何使用 LISTAGG 连接 Oracle SQL 中多行的列值?

Patricia Arquette
发布: 2025-01-23 15:11:12
原创
148 人浏览过

How Can I Concatenate Column Values from Multiple Rows in Oracle SQL Using LISTAGG?

Oracle SQL:使用 LISTAGG 组合多行的列值

Oracle 提供了多种将多行数据组合成单个字符串的方法。 LISTAGG 函数是一种特别有效的方法。

假设您有两个表:表 A(具有包含值 A、B、C 的 PID 列)和表 B(具有 PIDSEQDesc 列)。 目标是将表 B 中按 Desc 分组并按 PID 排序的 SEQ 值连接到结果集中的单个 Description 列中。

以下是如何使用 LISTAGG 来完成此操作:

<code class="language-sql">SELECT pid, LISTAGG(Desc, ' ') WITHIN GROUP (ORDER BY seq) AS description
FROM B
GROUP BY pid;</code>
登录后复制

此查询使用 LISTAGG 聚合每个唯一 DescPID 值,按 SEQ 列对它们进行排序并使用空格 (' ') 作为分隔符。输出将在 PID 列中显示每个 Desc 及其相应的串联 description 值。

要仅包含表 A 中存在的 PID,只需将此查询与表 A 连接即可:

<code class="language-sql">SELECT a.pid, LISTAGG(b.Desc, ' ') WITHIN GROUP (ORDER BY b.seq) AS description
FROM A a
JOIN B b ON a.pid = b.pid
GROUP BY a.pid;</code>
登录后复制

重要注意事项: LISTAGG 通常与 VARCHAR2 数据类型一起正确运行。

以上是如何使用 LISTAGG 连接 Oracle SQL 中多行的列值?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板