首頁 > 資料庫 > mysql教程 > 如何使用 LISTAGG 連接 Oracle SQL 中多行的列值?

如何使用 LISTAGG 連接 Oracle SQL 中多行的列值?

Patricia Arquette
發布: 2025-01-23 15:11:12
原創
149 人瀏覽過

How Can I Concatenate Column Values from Multiple Rows in Oracle SQL Using LISTAGG?

Oracle SQL:使用 LISTAGG 組合多行的欄位值

Oracle 提供了多種將多行資料組合成單一字串的方法。 LISTAGG 函數是一種特別有效的方法。

假設您有兩個表:表 A(具有包含值 A、B、C 的 PID 列)和表 B(具有 PIDSEQDesc 列)。 目標是將表 B 中按 Desc 分組並按 PID 排序的 SEQ 值連接到結果集中的單一 Description 列中。

以下是如何使用 LISTAGG 來完成此操作:

<code class="language-sql">SELECT pid, LISTAGG(Desc, ' ') WITHIN GROUP (ORDER BY seq) AS description
FROM B
GROUP BY pid;</code>
登入後複製

此查詢使用 LISTAGG 聚合每個唯一 DescPID 值,按 SEQ 列對它們進行排序並使用空格 (' ') 作為分隔符號。輸出將在 PID 欄位中顯示每個 Desc 及其對應的串聯 description 值。

要只包含表 A 中存在的 PID,只需將此查詢與表 A 連接即可:

<code class="language-sql">SELECT a.pid, LISTAGG(b.Desc, ' ') WITHIN GROUP (ORDER BY b.seq) AS description
FROM A a
JOIN B b ON a.pid = b.pid
GROUP BY a.pid;</code>
登入後複製

重要注意事項: LISTAGG 通常與 VARCHAR2 資料型別一起正確運作。

以上是如何使用 LISTAGG 連接 Oracle SQL 中多行的列值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板