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

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

Susan Sarandon
Susan Sarandon原創
2025-01-15 18:38:46784瀏覽

How to Aggregate Multiple Rows into One in Oracle SQL?

Oracle SQL:將多行資料合併為一行

當資料集按特定列組織時,可能需要將多行合併成單行。這可以透過SQL的資料聚合操作來實現。

在Oracle SQL中,WM_CONCAT 函數提供了一種將多行值連接起來的簡單方法。但是,值得注意的是,此函數在Oracle 12c及更高版本中已被標記為不支援並已移除。

WM_CONCAT 方法 (Oracle 12c 之前)

在Oracle 12c之前,可以使用WM_CONCAT 來聚合值:

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

替代方法:LISTAGG (Oracle 12c 及以後)

對於Oracle 12c或更高版本的資料庫,LISTAGG 提供了WM_CONCAT 的替代方案。此函數提供了增強的功能,專門用於字串聚合任務:

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

自訂實作

如果既沒有WM_CONCAT 也沒有LISTAGG,則可以使用子查詢和字串操作函數的組合來建立自訂實作。 相關連結 (例如,oracle-base.com) 提供了此方法的詳細說明。

以上是如何在 Oracle SQL 中將多行聚合為一行?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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