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関数を使用して最初のカンマを空白文字列に置き換え、最終的なマージされた結果を得ます。

bannerAds