[MSSQL] 로우 합치기 STUFF, FOR XML PATH, mysql group_concat 기능
개발을 하다보면 가끔씩 필요한 기능이다.
중복되는 로우가 있는데 조인하면 다른 데이터들도 같이 나올때
중복되는거 합치고 여러로우로 된 데이터들만 한 컬럼에 한줄로 표현하고 싶을때가 있다.
ID |
data |
1 |
사과 |
1 |
배 |
2 |
망고 |
2 |
사과 |
2 |
배 |
이런 경우
ID |
data |
1 |
사과,배 |
2 |
망고,사과,배 |
이렇게 뽑아내고 싶을때 사용하는 방법이다.
여기서 사용할건 STUFF와 FOR XML PATH다
간단하게 그냥 예제를 보도록 하자
1 2 3 4 5 6 7 8 9 10 11 12 13 | SELECT DISTINCT ID, -- id 중복 제거 STUFF(( SELECT ',' + DATA FROM dataTbl b WHERE b.ID = a.ID FOR XML PATH('') ),1,1,'') AS NAME FROM dataTbl a | cs |
이런식으로 사용하면 된다.
dataTbl이 단일 테이블이 아니라 그냥 괄호로 묶어서 조인해놓은 서브쿼리를 사용해도 무방하다.
'Yame Programmer > SQL' 카테고리의 다른 글
[MSSQL] 프로시저 트리거 while 반복문 사용 방법, 변수를 컬럼명으로 사용 하는 방법 (0) | 2017.05.17 |
---|---|
[MSSQL]Insert실행시 자동증가되는 IDENTITY값 바로 가져오기 (0) | 2017.04.26 |
[Oracle MyBatis] 오라클 마이바티스에서 다중 insert 하는 방법(insert all) (0) | 2017.01.16 |
[Mybatis] getter for property named 에러 해결방법 (3) | 2017.01.11 |
[MyBatis] Oracle 부적합한 열유형 null 처리 방법 jdbcType=VARCHAR 안쓰기 (2) | 2017.01.11 |