오라클 행 합치기 기능 – listagg


한 데이터가 있습니다. A, B, C지역에 여러명의 사람들이 살아가고 있지만 이 사람들은 각기 다름 이름을 가지고 있습니다. 이 사람들을 지역별로 묶어서 데이터를 표현해야 할 경우 어떻게 해야 할까요?


오라클에서는 여러 행을 하나의 열로 합치는 기능을 제공하여 위와 같은 기능을 편리하게 구현할 수 있는데요. 바로 listagg 기능을 사용하면 되는데요. 기능을 통해 오라클 행 합치기 기능을 수행해 보겠습니다.

문법

 LISTAGG(컬럼, ',') WITHIN GROUP (ORDER BY 컬럼) 

위의 문법은 첫번째 컬럼에 해당 하는 부분은 합쳐지는 데이터를 콤마로 구분지어 계속 append 시키는 역할을 하며, Order by절의 컬럼은 append되는 데이터의 정렬 기능을 합니다.

예제

오라클에서 제공하는 기본 테이블인 emp를 이용해 보겠습니다.

데이터를 보시면 job 컬럼은 중복된 값이 있는 반면 
ename은 중복된 값이 없습니다. 
그래서 JOB별 이름을 모두 다 표현해 보겠습니다.

 SELECT JOB 
     , LISTAGG(ENAME, ',') WITHIN GROUP (ORDER BY ENAME) LISTAGG 
FROM EMPLOYEE 
GROUP BY JOB 

중복이 되는 job을 group by로 묶고 job에 해당하는 데이터는 listagg를 통해서 콤마(,)로 연결지어 표현해 보았습니다.

데이터를 보시면 order by 절에 ename이 오름차순으로 되어 있어 알파벳순으로 데이터가 표현된 모습입니다.

이와 같이 오라클 행 합치기 기능을 사용하면 효과적으로 데이터를 표현할 수 있습니다.


답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

이 사이트는 스팸을 줄이는 아키스밋을 사용합니다. 댓글이 어떻게 처리되는지 알아보십시오.