본문 바로가기
데이터베이스/MSSQL

MSSQL 여러 Row를 하나로 합치기

by Dokon Jang 2023. 6. 28.
반응형

여러 ROW의 컬럼의 값을 하나로 합치는 방법입니다.

XML 만드는 쿼리를 이용하는데, 아래와 같이 쿼리를 실행하면 NAME 태그로 XML이 표시됩니다.
WITH A AS
(
	SELECT '이순신' NAME
	UNION ALL
	SELECT '홍길동' NAME
	UNION ALL
	SELECT '김유신' NAME
)
SELECT NAME
  FROM A
 ORDER BY NAME
   FOR XML PATH('')

 

XML 태그를 없애기 위해서는 컬럼명을 지정하시 않게 해야 하는데, 구분자(,)를 넣고 ALIAS(별칭)를 지정하지 않습니다.
WITH A AS
(
	SELECT '이순신' NAME
	UNION ALL
	SELECT '홍길동' NAME
	UNION ALL
	SELECT '김유신' NAME
)
SELECT ',' + NAME
  FROM A
 ORDER BY NAME
   FOR XML PATH('')

 

STUFF 함수를 이용하여 첫번째 구분자(,)를 제거하면 여러 ROW의 컬럼 값을 하나로 합쳐집니다.
WITH A AS
(
	SELECT '이순신' NAME
	UNION ALL
	SELECT '홍길동' NAME
	UNION ALL
	SELECT '김유신' NAME
)
SELECT STUFF((SELECT ',' + NAME
                FROM A
			   ORDER BY NAME
			     FOR XML PATH('')), 1, 1, '') AS NAMES
  FROM A
반응형

댓글