## 네이버 블로그에 포스팅한 내용 옮겨오기
SQL Server에서 행 데이터 합치는 법 (구분자로 Merge하는법)
1. STRING_AGG
SELECT STRING_AGG([Merge할 컬럼명], '구분자')
WITHIN GROUP(ORDER BY [정렬 컬럼명]) -- 정렬 필요한 경우 WITHIN GROUP절 사용
FROM [테이블명]
GROUP BY [그룹 컬럼명]
-- 예시: Product 테이블에서 ProductName 컬럼을 seq 순서로 정렬 후 |로 구분하여 OrderID별로 합치기
SELECT STRING_AGG(ProductName, '|')
WITHIN GROUP(ORDER BY seq)
FROM Product
GROUP BY OrderID
2. FOR XML PATH
SELECT [Merge할 컬럼명] + '구분자'
FROM [테이블명]
FOR XML PATH('')
-- 예시: Product 테이블에서 ProductName 컬럼을 |로 구분하여 합치기
SELECT '|' + ProductName
FROM Product
FOR XML PATH('')
--> FOR XML PATH 사용 시 WITH절 (CTE) 굳이 쓸 필요 없음.
WITH절은 Hierarchy 구조에서 사용하자.
--> 저 예시대로 쿼리를 짜면 맨 앞에 | 구분자가 하나 더 나오게 된다!
STUFF를 활용해서 앞에 삭제해주면 됨.
∴ 정렬 기능이 있고 성능도 더 나은 STRING_AGG를 주로 사용하고,
FOR XML PATH는 참고용으로만 알아두자 (오래된 구문임).