SQL 사용자 Tip & 강좌
구분자관련 질문이 상당히 많더라구요.
여러 방법으로 기술되어 있네요.... 참고하시면 쓸모가 있을듯 합니다.
1) 행값을 구분자로 합하여 열로 표현.

(1) 행값을 구분자로 합하여 열로 표현 하는 거기에서
두번째 쿼리 Adrian Downes 의 쿼리는 ID 3 일때 null 이 나오는데, 잘못된 쿼리가 아닌가여?
sqlleader 에서도 그냥 아무도 말이 없길래~ 여쭤보는거에요. ^
id별 자료가 하나 일때는 null로 나오게 됩니다...
중간 녹색부분에서 null 처리가 되다보니 발생하는것 같은데...
빨간색 부분에서 COALESCE를 이용해서 처리하면 될듯 합니다...
SELECT res.id, MAX(res.[NAME]) AS [NAME]
FROM
(
SELECT c.id,
CASE
WHEN PATINDEX('%' + d.[NAME] + '%', c.[NAME]) = 0 AND c.id = d.id
THEN c.[NAME] + ', ' + d.[NAME]
ELSE COALESCE(c.[NAME] , d.[NAME] )
END AS [NAME]
FROM
(
SELECT a.id, MIN(a.[NAME]) AS [NAME]
FROM
(
SELECT y.id,
CASE
WHEN PATINDEX('%' + z.[NAME] + '%', y.[NAME]) = 0 AND y.id = z.id
THEN y.[NAME] + ', ' + z.[NAME]
END AS [NAME]
FROM t1 y
INNER JOIN t1 z ON y.id = z.id
) a
GROUP BY a.id
) c
INNER JOIN t1 d ON c.id = d.id
) res
GROUP BY res.id
GO

코난
