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