テーブルをリレーションする際に、ある ID から取得した結果を一行にまとめて結合させたい場合、FOR XML を使う。これにより、結果セットを CSV に整形した結果を一行にまとめて表示させることも可能。
FOR XML は、取得した項目に区切り文字を連結させて使用する。以下は、何も考えないで連結するパターン。値の終端にもカンマが付いてしまっている。
値を [data()] として扱い、一旦スペースに変換してから、スペースを , に変換すると、スマートにな表示になる。
Classes
Students
FOR XML は、取得した項目に区切り文字を連結させて使用する。以下は、何も考えないで連結するパターン。値の終端にもカンマが付いてしまっている。
SELECT
C.Code AS クラスコード
,C.Name AS クラス名
,(SELECT S.FirstName + ',' FROM Students AS S WHERE S.ClassCode = C.Code FOR XML PATH('')) AS メンバー
FROM Classes AS C
値を [data()] として扱い、一旦スペースに変換してから、スペースを , に変換すると、スマートにな表示になる。
SELECT
C.Code AS クラスコード
,C.Name AS クラス名
,REPLACE(
(SELECT S.FirstName AS [data()] FROM Students AS S WHERE S.ClassCode = C.Code FOR XML PATH('')), ' ', ',') AS メンバー
FROM Classes AS C



