반응형
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 여러 열값을 하나의 행으로 가져오기
반응형
'Database > SQL' 카테고리의 다른 글
oracle 오라클 과거 데이터 조회, 복구 AS OF 몇분전, 몇시간전 (0) | 2018.01.30 |
---|---|
Oracle 오라클 두 좌표 사이의 거리 구하기 WGS84 (0) | 2017.11.07 |
ORA-28001 , ORA-28002 비밀번호 만기관련 오라클 해결방법. (0) | 2017.06.14 |
엑셀 Excel ODBC 연동시 case when 방법 (0) | 2016.09.09 |
엑셀 Excel ODBC 연동시 nvl isnull, ifnull 방법. (0) | 2016.09.09 |
댓글