데이터베이스/MSSQL

MSSQL 여러 Row를 하나로 합치기

Dokon Jang 2023. 6. 28. 08:39
반응형

여러 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
반응형