ホームページ >データベース >mysql チュートリアル >DB2 SQL でグループ化されたデータからカンマ区切り値を生成するにはどうすればよいですか?

DB2 SQL でグループ化されたデータからカンマ区切り値を生成するにはどうすればよいですか?

Patricia Arquette
Patricia Arquetteオリジナル
2025-01-09 14:33:42633ブラウズ

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

DB2 SQL グループ化データはカンマ区切り値を生成します

質問: DB2 SQL には、グループ化された列データのカンマ区切り値を直接生成できる関数はありますか?

シナリオ: ID 列とロール列を持つテーブルがあります。同じ ID に複数の行があり、各行がその ID の異なる役割を表す場合があります。目標は、これらのロールを一意の ID ごとにカンマ区切りの文字列に連結することです。

例:

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

期待される出力:

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

答え:

DB2 LUW 9.7 では、この問題を解決する新しい関数 LITAGG が導入されています。

文法:

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

手順:

  • 式: 結合する列
  • 区切り文字: 連結された値の間に使用される区切り文字 (例:,,)

使用法:

各一意の 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 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。