Oracle SQL:使用 LISTAGG 组合多行的列值
Oracle 提供了多种将多行数据组合成单个字符串的方法。 LISTAGG
函数是一种特别有效的方法。
假设您有两个表:表 A(具有包含值 A、B、C 的 PID
列)和表 B(具有 PID
、SEQ
和 Desc
列)。 目标是将表 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
聚合每个唯一 Desc
的 PID
值,按 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中文网其他相关文章!