SQLServerで複数行を一列に結合する方法
SQL Serverでは、FOR XML PATH句を使用して複数行を1行の複数列にマージすることができます。以下は一例です:
Employeesというテーブルがあると仮定すると、以下のデータが含まれます。
ID Name Department
--------------------------
1 John IT
2 Mary HR
3 David Finance
以下のクエリを使用して、前述のデータを1行の複数列の結果に結合できます:
SELECT STUFF((SELECT ',' + Name
FROM Employees
FOR XML PATH('')), 1, 1, '') AS Names
結果は以下の通りです。
Names
-----------------
John,Mary,David
上記のクエリーでは、サブクエリでFOR XML PATH(”)を使用して各Name値をカンマ区切りの文字列に変換します。その後、STUFF関数を使用して最初のカンマを空白文字列に置き換え、最終的なマージされた結果を得ます。