ホームページ > データベース > mysql チュートリアル > DB2 グループの列値をカンマ区切り文字で連結するにはどうすればよいですか?

DB2 グループの列値をカンマ区切り文字で連結するにはどうすればよいですか?

DDD
リリース: 2025-01-09 14:51:42
オリジナル
747 人が閲覧しました

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

DB2: カンマ区切りのグループ値を生成

この記事では、グループ内の列値を連結し、カンマで区切ることができる組み込み関数が DB2 SQL にあるかどうかを検討します。この関数の必要性は、複数の行が同じグループ識別子 (例では ID) を共有しているが、他の列が異なる値 (ロールなど) を持っている状況で発生します。望ましい出力は、各グループに関連付けられた値をカンマ区切りのリストに連結することです。

解決策: 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>
ログイン後にコピー

各カテゴリ グループの 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 句を指定することで、結合する前に値の並べ替え順序を制御できます。

たとえば、次のクエリは、各カテゴリ グループの 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 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート