ホームページ > データベース > mysql チュートリアル > FOR XML PATH を使用して SQL Server で値を集計およびカンマ区切りにする方法

FOR XML PATH を使用して SQL Server で値を集計およびカンマ区切りにする方法

Patricia Arquette
リリース: 2025-01-07 21:19:40
オリジナル
935 人が閲覧しました

How to Aggregate and Comma-Separate Values in SQL Server Using FOR XML PATH?

SQL Server: 集計中に値をカンマで連結する

SQL Server では多くの場合、データを特定の列でグループ化し、関連する値を単一のカンマ区切り文字列に結合する必要があります。 これを例で説明してみましょう。 YourTable という名前のテーブルに IDValue という列があるとします。

<code>ID   |  Value
-------|--------
1    |   a
1    |   b
2    |   c</code>
ログイン後にコピー

目標は、一意の各 ID に、関連する Value エントリの対応するカンマ区切り文字列が含まれる結果セットを生成することです。 これは、FOR XML PATH メソッドを使用して実現できます。

<code class="language-sql">SELECT 
    ID, 
    STUFF((SELECT ', ' + Value
           FROM YourTable t2
           WHERE t1.ID = t2.ID
           FOR XML PATH(''), TYPE).value('.', 'NVARCHAR(MAX)'), 1, 2, '') AS Values
FROM YourTable t1
GROUP BY ID;</code>
ログイン後にコピー

このクエリは次のように機能します:

  1. 外側 SELECT: これにより、ID 列が選択され、集計の準備が整います。
  2. 内部 SELECT: これにより、外部クエリから現在の Value に一致するすべての ID エントリが取得されます。 ', ' Value は、各値の前にカンマとスペースを追加します。
  3. FOR XML PATH(''): これは、内部クエリの結果を XML 文字列に変換し、値を効果的に連結します。 空の文字列 '' により、XML タグが生成されなくなります。
  4. .value('.', 'NVARCHAR(MAX)'): これにより、XML から連結された文字列が抽出されます。
  5. STUFF(..., 1, 2, ''): これにより、連結された文字列から先頭の「,」が削除されます。

最終的な出力は次のようになります:

<code>ID   |  Values
-------|--------
1    |   a, b
2    |   c</code>
ログイン後にコピー

この手法は、SQL Server でカンマ区切り集計を実行するための簡潔かつ効率的な方法を提供します。

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

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