Database/Oracle

[Oracle] LISTAGG - 여러 행을 하나로 묶어 조회하기

Ma_Sand 2022. 7. 10. 16:00
반응형

 

위의 ROOM_JOIN 테이블을 보면 JOIN_NAME 컬럼과 USER_NO 컬럼, ROOM_NO 컬럼이 있다.

 

 

여러 행들을 하나로 묶어서 보여주고 싶을 땐,

 

LISTAGG(합칠 컬럼, '구분자') WITHIN GROUP (ORDER BY 합칠 컬럼) "별칭"

FROM 해당 테이블

GROUP BY 합칠 컬럼에 대한 기준이 되는 컬럼;

 

이때, GROUP BY는 무조건 작성해야 한다.

 

 

 

만약 ROOM_NO을 기준으로 USER_NO 컬럼의 행들을 하나로 묶고 싶다면?

 

SELECT LISTAGG(USER_NO, ', ') WITHIN GROUP (ORDER BY USER_NO) "USER_NO"

FROM ROOM_JOIN

GROUP BY ROOM_NO;

 

실행 결과

 

 

 

만약 SELECT절에 ROOM_NO를 추가하고 JOIN_NAME 컬럼을 합쳐서 보여주고 싶으면?

 

SELECT ROOM_NO,

               LISTAGG(USER_NO, ', ') WITHIN GROUP (ORDER BY USER_NO) "USER_NO",

               LISTAGG(JOIN_NAME, ', ') WITHIN GROUP (ORDER BY JOIN_NAME) "JOIN_NAME"

FROM ROOM_JOIN

GROUP BY ROOM_NO;

 

실행 결과

반응형