首頁 >資料庫 >mysql教程 >如何在 DB2 SQL 中從分組資料產生逗號分隔值?

如何在 DB2 SQL 中從分組資料產生逗號分隔值?

Patricia Arquette
Patricia Arquette原創
2025-01-09 14:33:42678瀏覽

How to Generate Comma-Separated Values from Grouped Data in DB2 SQL?

DB2 SQL 分組資料產生逗號分隔值

問題: DB2 SQL 中是否存在可以直接產生分組列資料逗號分隔值的函數?

場景: 我們有一個表,包含 ID 欄位和 Role 欄位。同一 ID 可能存在多行,每行代表該 ID 的不同角色。目標是將這些角色連接成每個唯一 ID 的逗號分隔字串。

範例:

<code>ID   | Role
------------
4555 | 2
4555 | 3
4555 | 4</code>

期望輸出:

<code>4555 2,3,4</code>

答案:

DB2 LUW 9.7 引入了一個新函數 LISTAGG,可以解決此問題。

文法:

<code>LISTAGG(expression, delimiter) WITHIN GROUP (ORDER BY expression ASC|DESC)</code>

說明:

  • expression: 要連接的欄位
  • delimiter: 連接值之間使用的分隔符號(例如,,)

用法:

要檢索每個唯一 ID 的逗號分隔角色值,可以使用以下查詢:

<code>SELECT id, LISTAGG(role, ', ') WITHIN GROUP (ORDER BY role ASC) AS roles
FROM myTable
GROUP BY id;</code>

輸出:

<code>ID   | roles
------------
4555 | 2,3,4</code>

附加說明:

  • LISTAGG 函數中的 ORDER BY 子句決定連接的順序。
  • 如果未指定 ORDER BY 子句,則值將以任意順序連接。
  • LISTAGG 函數也可用於產生其他類型的連接字串,例如換行符分隔的值。

以上是如何在 DB2 SQL 中從分組資料產生逗號分隔值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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