首页 > 数据库 > mysql教程 > 如何在 Oracle SQL 中将多行聚合为单行?

如何在 Oracle SQL 中将多行聚合为单行?

Linda Hamilton
发布: 2025-01-15 18:42:43
原创
642 人浏览过

How to Aggregate Multiple Rows into a Single Row in Oracle SQL?

Oracle SQL 多行合并为单行

在Oracle数据库中,您可能需要将表中的多行合并成一行,创建一个包含多个列的表格结构。假设有一个表,其模式如下:

<code>A 1
A 2
B 1
B 2</code>
登录后复制

要达到以下预期结果:

<code>A 1 2
B 1 2</code>
登录后复制

Oracle 提供了特定的 SQL 函数来满足此需求:

WM_CONCAT 函数(已弃用)

警告: WM_CONCAT 函数现已弃用,在 Oracle 12c 及更高版本中已被移除。在更高版本中使用它可能会导致不可预测的结果。

<code class="language-sql">SELECT field1, WM_CONCAT(field2)
FROM YourTable
GROUP BY field2;</code>
登录后复制

LISTAGG 函数

对于较新的 Oracle 版本,建议使用 LISTAGG 函数:

<code class="language-sql">SELECT field1, LISTAGG(field2, ',') WITHIN GROUP (ORDER BY field2)
FROM YourTable
GROUP BY field1;</code>
登录后复制

自定义聚合

如果您的 Oracle 版本中既没有 WM_CONCAT 也 没有 LISTAGG 函数,您可以按照以下步骤实现自定义聚合:

  1. 创建一个临时表来存储聚合数据。
  2. 使用循环或递归将所需数据插入临时表。
  3. 从临时表中检索聚合数据。

请注意,自定义聚合可能比使用预定义函数更复杂,计算量也更大。

以上是如何在 Oracle SQL 中将多行聚合为单行?的详细内容。更多信息请关注PHP中文网其他相关文章!

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