ホームページ >データベース >mysql チュートリアル >SQL Server の GROUP BY 句を使用してレポート ID によって電子メールを連結するにはどうすればよいですか?

SQL Server の GROUP BY 句を使用してレポート ID によって電子メールを連結するにはどうすればよいですか?

Linda Hamilton
Linda Hamiltonオリジナル
2025-01-10 17:41:41398ブラウズ

How to Concatenate Emails by Report ID Using SQL Server's GROUP BY Clause?

SQL Server: GROUP BY

を使用したレポート ID グループ内の電子メールの連結

SQL Server では、データを効率的にグループ化し、関連する値を単一の文字列に結合することが一般的なタスクです。 GROUP BY 句は、指定された列に基づいて行をグループ化し、データの操作と計算に集計関数を使用できるようにします。

レポート ID によるメールの結合

次のような構造のテーブルを想像してください:

<code>ID    ReportId     Email
1     1            [email protected]
2     2            [email protected]
3     1            [email protected]
4     3            [email protected]
5     3            [email protected]</code>

目的は、行を ReportId でグループ化し、対応する電子メールをカンマ区切りの文字列に連結することです。 目的の出力:

<code>ReportId     Email
1            [email protected], [email protected]
2            [email protected]
3            [email protected], [email protected]</code>

STUFF() 関数の活用

これは、サブクエリ内の STUFF() 関数を使用して効果的に実現されます。

<code class="language-sql">SELECT ReportId, Email = 
    STUFF((SELECT ', ' + Email
           FROM your_table b 
           WHERE b.ReportId = a.ReportId 
          FOR XML PATH('')), 1, 2, '')
FROM your_table a
GROUP BY ReportId</code>

詳細な説明:

  • 内部サブクエリは、各 ReportId のすべての電子メールを選択し、各電子メールの前にカンマとスペースを追加します。
  • FOR XML PATH('') は、サブクエリの結果を単一の XML 文字列に変換します。
  • STUFF() は、XML 文字列から先頭のカンマとスペースを削除し、目的のカンマ区切りの電子メール リストを作成します。

さらなる考慮事項:

  • 他の集計関数 (SUM()AVG() など) は、グループ化されたデータのさまざまな計算のために GROUP BY とともに使用できます。
  • STUFF() は、さまざまな文字列操作操作を行うための汎用性の高い関数です。

以上がSQL Server の GROUP BY 句を使用してレポート ID によって電子メールを連結するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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