在Oracle数据库中,您可能需要将表中的多行合并成一行,创建一个包含多个列的表格结构。假设有一个表,其模式如下:
<code>A 1 A 2 B 1 B 2</code>
要达到以下预期结果:
<code>A 1 2 B 1 2</code>
Oracle 提供了特定的 SQL 函数来满足此需求:
警告: WM_CONCAT 函数现已弃用,在 Oracle 12c 及更高版本中已被移除。在更高版本中使用它可能会导致不可预测的结果。
<code class="language-sql">SELECT field1, WM_CONCAT(field2) FROM YourTable GROUP BY field2;</code>
对于较新的 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 函数,您可以按照以下步骤实现自定义聚合:
请注意,自定义聚合可能比使用预定义函数更复杂,计算量也更大。
以上是如何在 Oracle SQL 中将多行聚合为单行?的详细内容。更多信息请关注PHP中文网其他相关文章!