首頁 >資料庫 >mysql教程 >如何使用逗號分隔符號連接 DB2 群組中的列值?

如何使用逗號分隔符號連接 DB2 群組中的列值?

DDD
DDD原創
2025-01-09 14:51:42743瀏覽

How Can I Concatenate Column Values in DB2 Groups with Comma Separators?

DB2:產生逗號分隔的群組值

本文探討在DB2 SQL中是否內建函數可以將群組內的列值連接起來,並以逗號分隔。這種函數的需求出現在多行共享同一個群組標識符(例如,範例中的ID)但其他列具有不同值(例如,Role)的情況下。期望的輸出是將與每個群組關聯的值連接成逗號分隔的清單。

解:使用LISTAGG函數

DB2 LUW 9.7 引入了LISTAGG函數,該函數能夠將每個組中指定列的值連接起來,並用使用者定義的分隔符號分隔。此函數可用於實現所需的逗號分隔輸出。

範例:

考慮以下帶有id和category列的myTable表:

<code class="language-sql">create table myTable (id int, category int);

insert into myTable values (1, 1);
insert into myTable values (2, 2);
insert into myTable values (5, 1);
insert into myTable values (3, 1);
insert into myTable values (4, 2);</code>

要產生每個category群組中id值的逗號分隔列表,可以使用以下查詢:

<code class="language-sql">select category, LISTAGG(id, ', ') as ids from myTable group by category;</code>

此查詢將產生以下輸出:

<code>CATEGORY  IDS
--------- -----
1         1, 5, 3
2         2, 4</code>

附加功能:

LISTAGG函數允許額外控制每個組中連接值的順序。透過在LISTAGG函數中指定ORDER BY子句,可以在連接之前控制值的排序順序。

例如,以下查詢將按升序排列每個category群組中的id值:

<code class="language-sql">select category, LISTAGG(id, ', ') WITHIN GROUP(ORDER BY id ASC) as ids from myTable group by category;</code>

這將產生以下輸出:

<code>CATEGORY  IDS
--------- -----
1         1, 3, 5
2         2, 4</code>

以上是如何使用逗號分隔符號連接 DB2 群組中的列值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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