首頁 >資料庫 >mysql教程 >如何在 Oracle SQL 中將多行聚合為單行?

如何在 Oracle SQL 中將多行聚合為單行?

Linda Hamilton
Linda Hamilton原創
2025-01-15 18:42:43645瀏覽

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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn