개발/MSSQL

여러 행의 데이터를 한 칼럼에 담기

devriver 2018. 1. 26. 18:04
반응형

IDX

NAME 

1

A

1

B

1

C

2

B

2

D


[ 테이블명 : TB_NAME ]


위 테이블을 아래와 같이 출력하고 싶다.

* 구분자 ,는 변경 가능.


IDX

NAME

 1

 A,B,C

 2

B,D 


SELECT 

DISTINCT IDX,

STUFF

( (

SELECT ',' + NAME FROM TB_NAME A WHERE A.IDX = B.IDX

FOR XML PATH('')

),1,1,'') AS NAME

FROM TB_NAME B


STUFF(STRING,1,1,'')

- 맨 앞 문자 한개 제거


https://docs.microsoft.com/ko-kr/sql/t-sql/functions/stuff-transact-sql


STUFF 함수


STUFF ( character_expression , start , length , replaceWith_expression )


start 

삭제 및 삽입 시작 위치,

0, 음수면 NULL이 반환된다.


length

삭제 할 문자 수 지정

0, 음수면 NULL이 반환된다.


replaceWith_expression 

''이면 아무것도 삽입하지 않고 문자를 제거