Oracle SQL:使用 LISTAGG 組合多行的欄位值
Oracle 提供了多種將多行資料組合成單一字串的方法。 LISTAGG
函數是一種特別有效的方法。
假設您有兩個表:表 A(具有包含值 A、B、C 的 PID
列)和表 B(具有 PID
、SEQ
和 Desc
列)。 目標是將表 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
聚合每個唯一 Desc
的 PID
值,按 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中文網其他相關文章!