SQL Server で複数の行を単一のカンマ区切り文字列に効率的に結合する
SQL Server では、特に結果をグループ化する場合に、複数の行のデータを単一のカンマ区切りの文字列に集約する必要があることがよくあります。 これは、レポート作成とデータ表示の一般的なタスクです。 これを実現する強力な方法は、FOR XML PATH
コンストラクトを利用することです。
「ID」列と「Value」列を含むテーブルを調べてみましょう:
ID | Value |
---|---|
1 | a |
1 | b |
2 | c |
次の SQL クエリは、一意の Value
ごとに ID
エントリをカンマ区切りの文字列に効率的に連結します。
<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>
このクエリは、FOR XML PATH('')
を含むサブクエリを使用して値を連結します。 .value('.', 'NVARCHAR(MAX)')
メソッドは、XML 結果を文字列に変換します。 STUFF
は、先頭のカンマとスペースを削除します。
出力は次のようになります:
ID | Values |
---|---|
1 | a, b |
2 | c |
このアプローチは、SQL Server でカンマ区切りの集計値を生成するクリーンかつ効率的な方法を提供し、データの可読性と使いやすさを向上させます。
以上がSQL Serverで複数の行を単一のカンマ区切り文字列に連結するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。