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

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

Linda Hamilton
發布: 2025-01-15 18:42:43
原創
696 人瀏覽過

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
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板