DB/Oracle
[Oracle 11g] group by로 그룹핑한 row들의 문자열 합치기(concat)
louis.dev
2013. 12. 18. 13:23
Oracle 11g에 LISTAGG라는 function이 추가되었습니다. 이 function은 group by로 그룹핑된 문자열 row들을 하나의 컬럼으로 결합시키는 역할을 하게 됩니다. 간단하게 예를 들어보도록 하겠습니다.
DEPTNO |
NAME |
1 |
김태희 |
1 |
전지현 |
2 |
성나정 |
3 |
고아라 |
위의 데이터에서 부서번호(DEPTNO)가 1인 사원들의 이름을 한번에 뽑고 싶을 경우에는 아래와 같은 쿼리를 사용하면 됩니다.
SELECT deptno, LISTAGG(name, ',') within group (order by name) name FROM test_tb where deptno = 1 group by deptno;
LISTAGG(결합시킬 컬럼, ROW 사이의 결합 문자) within group (해당 그룹 사이의 정렬조건)
으로 간단하게 사용할 수 있습니다
위 쿼리를 실행하면 결과값은 아래처럼 나오게 됩니다.
DEPTNO |
NAME |
1 |
김태희, 전지현 |