Database/SQL

오라클 WM_CONCAT 하나의 컬럼으로 가져오기, 중복제거

리커니 2017. 10. 25. 09:13
반응형

 

ORACLE 오라클 WM_CONCAT 하나의 컬럼으로 가져오기, 중복제거

 

개발을 하다보면

여러 ROW 의 데이터를 하나의 행으로 가져와야 할 때가 있습니다.

 

이럴 떄 사용하는 것이 WM_CONCAT 함수입니다.

 

예를 들어 아래와 같은 데이터가 있다고 하죠.

 

 SELECT *
  FROM COL_DRIVING_LOG_INFO

 

 

여기서 USER_ID 별로 DRIVING_END_TIME 을 하나의 행으로 가져오고 싶다고 합시다.

그럼 아래와 같이 WM_CONCAT을 사용하면 됩니다.

SELECT USER_ID
        , WM_CONCAT(DRIVING_END_TIME)
  FROM COL_DRIVING_LOG_INFO
 GROUP BY USER_ID

 

그럼 아래와 같은 결과를 가져오게 되죠. 근데 중복값이 있네요?

중복제거는 DISTINCT 를 사용합니다. DISTINCT 사용되는 위치에 주의하세요.

 

 

SELECT USER_ID
         , WM_CONCAT(DISTINCT DRIVING_END_TIME)
  FROM COL_DRIVING_LOG_INFO
 GROUP BY USER_ID

 

 

 이렇게 여러 열값을 하나의 행으로 가져오는데는 WM_CONCAT 함수 외에도

LISTAGG 가 존재합니다. (11g 에서 추가된 함수)

 

LISTAGG 의 사용법은 아래의 Link를 참고하세요.

Link : ORACLE LISTAGG 여러 열값을 하나의 행으로 가져오기

 

ORACLE LISTAGG 여러 행을 하나의 컬럼으로 가져오기

ORACLE LISTAGG 여러 행을 하나의 컬럼으로 가져오기 11g 에서 추가. 10g 이하는 WM_CONCAT 함수 사용 (WM_CONCAT은 페이지 하단 Link 참고) 오라클에서 여러개의 열로 된 값을 한 행의 값으로 가져와야 할 때 L

aljjabaegi.tistory.com

 

반응형