ホームページ >データベース >mysql チュートリアル >SQL Server の GROUP BY と STUFF() を使用して ReportId によって電子メールを連結するにはどうすればよいですか?
SQL Server での電子メールの集約: GROUP BY および STUFF() ソリューション
SQL Server の GROUP BY
句は、データを要約するのに強力です。 頻繁に行われるタスクは、複数の行の値をカンマ区切りの 1 つの文字列に結合することです。 これは、STUFF()
.
サンプルの従業員レポート表を使って説明してみましょう:
ID | ReportId | |
---|---|---|
1 | 1 | john@example.com |
2 | 2 | mary@example.com |
3 | 1 | jane@example.com |
4 | 3 | david@example.com |
5 | 3 | susan@example.com |
カンマを区切り文字として使用して、各 ReportId
に関連付けられたメールを連結するには、次のクエリが機能します。
<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>
STUFF()
関数は文字列を変更します。 文字列、開始位置、削除する文字数、置換文字列の 4 つの引数を取ります。
外側のクエリは ReportId
によってグループ化されます。内部クエリでは、FOR XML PATH('')
を使用して、各グループの電子メールを連結します。 STUFF()
は、先頭のカンマとスペースを削除します。
クエリの出力:
ReportId | |
---|---|
1 | john@example.com, jane@example.com |
2 | mary@example.com |
3 | david@example.com, susan@example.com |
以上がSQL Server の GROUP BY と STUFF() を使用して ReportId によって電子メールを連結するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。