일하면서 중복된 데이터를 하나로 묶어 컬럼으로 나타내 주고 싶었습니다..
현재 테이블 상황
select PRO_TITLE,PRO_BODY from system.TB_PROJECT order by PRO_ID
테이블 상황은 이렇게 되어있으며
여기서 중복된 PRO_TITLE의 값은 하나로 통일하며
PRO_BODT의 값을 한 row 컬럼으로 나타내 줄겁니다.
1. WM_CONCAT 함수 사용하기
select
PRO_TITLE,
WM_CONCAT(PRO_BODY) as PRO_BODY
from
system.TB_PROJECT
group by PRO_TITLE
PRO_TITLE는 단일 그룹의 그룹 함수가 아니므로 group by로 PRO_TITLE를 묶어주어야 합니다.
쿼리문을 실행하면 WM_CONCAT 함수로 PRO_TITLE가 같은것들의 PRO_BODY로 합쳐줍니다.
2. XMLAGG, XMLELEMENT 사용
select
PRO_TITLE,
--WM_CONCAT(PRO_BODY) as PRO_BODY
SUBSTR(XMLAGG(xmlelement (PRO_TITLE, ',', PRO_BODY) order by PRO_ID).extract('//text()').GETSTRINGVAL(), 2) PRO_BODY
from
system.TB_PROJECT
group by
PRO_TITLE
,를 기준으로 PRO_TITLE의 PRO_BODY를 합쳐주고 정렬을 해줍니다.
물론 , 말고 사용자가 원하는 형식으로 표현해 줄 수 있습니다.
'코딩공부 > DataBase' 카테고리의 다른 글
ORA-00926: 누락된 VALUES 키워드 (0) | 2021.01.13 |
---|---|
oracle 시퀀스(sequence) 사용 (0) | 2020.12.07 |
oracle 테이블 백업 / 삭제 / 복사 (0) | 2020.08.18 |
oracle insert for문 (WHILE LOOP를 이용한 100만건 데이터 insert 하기) (0) | 2020.08.06 |
자주쓰는 오라클 함수 (0) | 2020.07.16 |