여러행의 값을 한 행으로 만들어서 보여주고 싶을때가 있습니다.
Fruit
Seq |
Name |
1 |
딸기 |
2 |
바나나 |
3 |
사과 |
4 |
배 |
다음과 같은 결과를 얻으려면 어떻게 해야할까요?
FOR XML PATH
먼저 필요한건 FOR XML절입니다. FOR XML절은 쿼리 실행 결과를 XML형식으로 만들어줍니다. PATH는 FOR XML절에서 사용할 수 있는 네 가지 모드 중 하나라고만 알고계세요.
우리가 원하는건 XML태그는 아닙니다. 단지 FOR XML PATH의 방식만 사용할겁니다.
SELECT ','+ Name FROM Fruit FOR XML PATH('')
결과는 이렇습니다.
우리가 원하는 결과와 비슷하지만 맨 앞의 콤마(,)를 없애면 더 좋겠네요
이때 필요한 게 STUFF 함수입니다.
STUFF함수는 지정된 문자열의 시작위치와 크기를 지정하여 원하는 문자로 치환하는 함수입니다.
SELECT STUFF(( SELECT ','+ Name FROM Fruit FOR XML PATH('') ), 1, 1, '') AS 과일이름
이렇게 하면 쿼리 결과의 맨 앞에 붙은 콤마(,)를 제거해 줍니다.
'MS-SQL' 카테고리의 다른 글
MSSQL UPDATE, UPDATE FROM (0) | 2018.10.24 |
---|---|
mssql 변경 내용을 저장할 수 없습니다. 변경 내용을 적용하려면 다음 테이블을 삭제하고... 오류해결 (1) | 2018.10.23 |
MSSQL 0 채우기 가장 쉬운방법 (0) | 2018.10.20 |
MSSQL 서버의 디폴트 datetime 포맷 변경 (2) | 2018.10.20 |
MSSQL 코딩 스타일 가이드 (0) | 2018.09.28 |