ホームページ >データベース >mysql チュートリアル >SQL Server の GROUP BY 句を使用してカンマ区切り値を集計する方法

SQL Server の GROUP BY 句を使用してカンマ区切り値を集計する方法

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

How to Aggregate Comma-Separated Values Using SQL Server's GROUP BY Clause?

SQL Server の GROUP BY を使用してカンマ区切り値を連結する

SQL Server の GROUP BY 句は、共有属性に基づいてデータを集計する場合に非常に役立ちます。 ただし、複数の値を単一のカンマ区切り文字列に結合するには、もう少し高度なアプローチが必要です。ここで STUFF 関数が役に立ちます。

GROUP BYSTUFF を使用してカンマ区切りの集計を実現する方法は次のとおりです。

<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>

このクエリを分析してみましょう:

  • Outer SELECT: これは、ReportId と集約された Email 文字列を取得します。
  • STUFF 関数: これは、電子メールを巧妙に連結し、それぞれの間にカンマとスペースを挿入します。
  • 内部 SELECT: このサブクエリは、特定の ReportId に関連付けられたすべての電子メールを取得します。
  • FOR XML PATH(''): これは、内部クエリの結果セットを XML 文字列に変換し、連結に便利な形式を提供します。
  • WHERE 句: これにより、内部クエリが外部クエリから ReportId に一致するメールのみを選択するようになります。

このクエリをサンプル データに適用すると、次の結果が生成されます:

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

この手法はカンマ区切りのリストを効率的に生成し、集約されたデータの処理を簡素化します。

以上がSQL Server の GROUP BY 句を使用してカンマ区切り値を集計する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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