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 

김태희, 전지현