구분자관련 질문이 상당히 많더라구요.
여러 방법으로 기술되어 있네요.... 참고하시면 쓸모가 있을듯 합니다.
1) 행값을 구분자로 합하여 열로 표현.
---> http://www.simple-talk.com/sql/t-sql-programming/concatenating-row-values-in-transact-sql/ 참고
Comment 6
-
석이
2010.02.07 18:11
감사합니다. ^--^; -
더따뜻한
2010.02.09 09:54
(1) 행값을 구분자로 합하여 열로 표현 하는 거기에서
두번째 쿼리 Adrian Downes 의 쿼리는 ID 3 일때 null 이 나오는데, 잘못된 쿼리가 아닌가여?
sqlleader 에서도 그냥 아무도 말이 없길래~ 여쭤보는거에요. ^
-
건우아빠
2010.02.09 10:35
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
) aGROUP BY a.id
) c
INNER JOIN t1 d ON c.id = d.id
) res
GROUP BY res.id
GO
-
더따뜻한
2010.02.10 19:50
감사합니다~
처음 보는 것들이 많아요 ^^* ㅎㅎ
-
감사합니다.
-
건우아빠
2010.09.17 22:52