#temp 테이블
name | clor | |
1 | apple | red |
2 | banana | yellow |
3 | peach | pink |
4 | melon | green |
1. for xml path 사용
for xml path를 사용하면 결과가 xml태그로 나온다.
하지만 우린 xml태그는 필요 없기 때문에 3번째 줄처럼 select ','+name라고 써준다.
그러면 결과는 ,apple,banana,peach,melon 라고 나온다.
여기서 첫 번째 콤마는 필요 없기 때문에 이 콤마를 제거해준다.
substring이나 replace같은 방법도 있지만 STUFF를 사용해서 첫 번째 콤마만 제거해주었다.
SELECT
STUFF((
SELECT ',' + name
FROM #temp
WHERE 1=1
FOR XML PATH('')
),1,1,'') AS fruits
fruits | |
1 | apple,banana,peach,melon |
2. coalesce 사용
coalesce는 null값을 체크할 때 쓰는 함수인데 여러 행을 한 줄로 나타낼 때 쓸 수도 있다.
DECLARE @fruitsName VARCHAR(20)
SELECT @fruitsName = COALESCE(@fruitsName + ',' ,'')+name FROM #temp WHERE 1=1
SELECT @fruitsName AS fruits
이번엔 변수 @fruitsName 를 선언해 변수에 값을 담았다.
결과는 위와 같다.
'MSSQL' 카테고리의 다른 글
[MSSQL] 날짜 년,월,일 가져오기 + 날짜 계산 (0) | 2021.10.26 |
---|---|
[MSSQL] convert를 이용한 날짜 형식 변환 표 (0) | 2021.07.29 |
[MSSQL] where절에 if문 같은 조건 사용하기 (0) | 2021.05.21 |
[MSSQL] 테이블 조작 명령어 : 컬럼 추가, 수정, 삭제 (0) | 2021.05.15 |
[MSSQL] 조건문 CASE WHEN 사용 예제 (0) | 2021.04.02 |