つまづいた石ころ、ぶつかった壁

問題(と解消)の記録

SQL SERVERで複数行のデータをカンマ区切りで取得する方法

なんだかこれまでも何度か遭遇したことのある気がするんですが、
過去にどうしたのか全く覚えがない件。


複数行に保存されているデータをカンマ区切りで一行にして取得したいんですが、
簡単にできないものかと調べてみると、あっさり見つかりました。

SQLServerでカンマ区切りする技
SQLServerで文字列を結合


やり方は簡単、「 FOR XML PATH('')」を付けたサブクエリを作るだけでした。

SELECT
   NAME
  ,(
    SELECT
      NAME + ','
    FROM
     USERS
    WHERE
      USER_GROUP_ID = GROUPS.ID
    FOR XML PATH('')
  ) AS USER_NAMES
FROM
  GROUPS


ORACLEでは
group_concat
と言うそうです。。
MYSQLもありますね。