ホームページ > データベース > mysql チュートリアル > SQL Server の GROUP BY を使用して一意の値をカンマ区切りの文字列に連結するにはどうすればよいですか?

SQL Server の GROUP BY を使用して一意の値をカンマ区切りの文字列に連結するにはどうすればよいですか?

Susan Sarandon
リリース: 2025-01-10 17:47:42
オリジナル
157 人が閲覧しました

How to Concatenate Unique Values into a Comma-Separated String Using SQL Server's GROUP BY?

SQL Server の GROUP BY を使用して一意の値をカンマ区切りのリストに集約する

チャレンジ:
重複したエントリを持つテーブルの場合、目標は、データを特定の列でグループ化し、別の列の一意の値を単一のカンマ区切り文字列に統合することです。

サンプルデータ:

次の表は、初期データセットを示しています。

ID ReportId Email
1 1 [email protected]
2 2 [email protected]
3 1 [email protected]
4 3 [email protected]
5 3 [email protected]

ターゲット結果:

望ましい結果は、電子メール アドレスが統合されたテーブルです:

ReportId Email
1 [email protected], [email protected]
2 [email protected]
3 [email protected], [email protected]

GROUP BY と 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>
ログイン後にコピー

詳細な説明:

コア ロジックには、STUFF 関数内のサブクエリが含まれます。このサブクエリは、外側のクエリの現在の行と同じ ReportId を共有するすべての行を反復処理します。 一致する行ごとに、蓄積される文字列にコンマと Email 値が追加されます。 次に、外側のクエリは GROUP BY を使用して、これらの連結された電子メール文字列を一意の ReportId ごとに集計します。 STUFF 関数は、最初のカンマとスペースを削除します。

以上がSQL Server の GROUP BY を使用して一意の値をカンマ区切りの文字列に連結するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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