메뉴 건너뛰기

?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄 첨부
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄 첨부

WM_CONCAT 함수를 이용하여 손쉽게 여러행의 데이터를 한 컬럼으로 합칠 수 있다.

 방법 1. (WM_CONCAT 이용)

--가상 테이블
WITH TEST_TABLE AS (
    SELECT '고구려' COUNTRY, '1대' ST, '동명성왕'   KING_NM FROM DUAL UNION ALL
    SELECT '고구려' COUNTRY, '3대' ST, '대무신왕'   KING_NM FROM DUAL UNION ALL
    SELECT '백제'   COUNTRY, '1대' ST, '온조왕'     KING_NM FROM DUAL UNION ALL
    SELECT '고구려' COUNTRY, '2대' ST, '유리왕'     KING_NM FROM DUAL UNION ALL
    SELECT '백제'   COUNTRY, '3대' ST, '기루왕'     KING_NM FROM DUAL UNION ALL
    SELECT '신라'   COUNTRY, '1대' ST, '남해왕'     KING_NM FROM DUAL UNION ALL
    SELECT '신라'   COUNTRY, '1대' ST, '박혁거세'   KING_NM FROM DUAL UNION ALL
    SELECT '백제'   COUNTRY, '2대' ST, '다루왕'     KING_NM FROM DUAL UNION ALL
    SELECT '신라'   COUNTRY, '1대' ST, '유리이사금' KING_NM FROM DUAL
)

--조회 쿼리
SELECT COUNTRY
     , WM_CONCAT(KING_NM) KING_NM
  FROM TEST_TABLE
 GROUP BY COUNTRY

- WM_CONCAT  함수를 이용하여 여러행의 값을 하나의 컬럼으로 합칠 수 있다.

값의 구분은 쉼표(,)로 구분되어 합쳐진다.

 

□ 방법 2. (XMLAGG, XMLELEMENT 이용)

--가상 테이블
WITH TEST_TABLE AS (
    SELECT '고구려' COUNTRY, '1대' ST, '동명성왕'   KING_NM FROM DUAL UNION ALL
    SELECT '고구려' COUNTRY, '3대' ST, '대무신왕'   KING_NM FROM DUAL UNION ALL
    SELECT '백제'   COUNTRY, '1대' ST, '온조왕'     KING_NM FROM DUAL UNION ALL
    SELECT '고구려' COUNTRY, '2대' ST, '유리왕'     KING_NM FROM DUAL UNION ALL
    SELECT '백제'   COUNTRY, '3대' ST, '기루왕'     KING_NM FROM DUAL UNION ALL
    SELECT '신라'   COUNTRY, '2대' ST, '남해왕'     KING_NM FROM DUAL UNION ALL
    SELECT '신라'   COUNTRY, '1대' ST, '박혁거세'   KING_NM FROM DUAL UNION ALL
    SELECT '백제'   COUNTRY, '2대' ST, '다루왕'     KING_NM FROM DUAL UNION ALL
    SELECT '신라'   COUNTRY, '3대' ST, '유리이사금' KING_NM FROM DUAL
)

--조회 쿼리
SELECT COUNTRY
     , SUBSTR(
        XMLAGG(
            XMLELEMENT(COL ,',', KING_NM) ORDER BY ST).EXTRACT('//text()'
        ).GETSTRINGVAL()
       , 2) KING_NM
  FROM TEST_TABLE
 GROUP BY COUNTRY

- 첫번째 방법에 비하여 조금 복잡해 보이나 합쳐지는 값의 구분자를 쉼표(,) 뿐만 아니라 사용자가 직접 값의 구분자를 지정 할 수 있다. 또한 해당 값의 정렬을 지정 가능 하다. 

 

□ 결과

○ 조회 전 (TEST_TABLE)

○ 조회 후


List of Articles
번호 제목 날짜 조회 수
81 스키마 조회 쿼리 모음 2016.09.12 10031
80 숫자를 문자로 변환 시 소수점 처리 (TO_CHAR, FM) file 2016.12.08 15026
79 숫자 체크 방법 (IS_NUMBER, IS_NUMERIC) file 2016.12.08 23119
78 동적쿼리(Dynamic SQL) 사용법 (텍스트 쿼리) file 2016.12.08 15036
77 데이터의 암호화 및 복호화 file 2016.12.08 13237
76 데이터베이스 백업하기 ( import : 가져오기 , export : 내보내기 ) file 2016.12.08 9877
75 단일행을 다중 row로 분리, 다중 row 결과를 단일행으로 연결하는 방법 2016.08.29 9382
74 다른 버전의 오라클 import, export 하기 file 2016.09.12 9475
73 날짜관련 계산하기(1) file 2016.12.08 8090
72 기간내 모든 날자(일자) 구하기 2016.12.08 7358
71 구분자로 자르기 (Split) file 2016.12.08 20563
70 관리자( SYSTEM, SYS) 계정 비밀번호를 잊어버렸을때.. file 2016.12.08 8336
69 계층형 쿼리의 응용 - 답변형 계시판 file 2016.12.08 8752
68 계층형 쿼리의 응용 - 달력만들기 file 2016.12.08 8528
67 간단한 쿼리로 일련번호 쉽게 넣기 - ROWNUM 사용 file 2016.08.29 9472
66 [Oracle|오라클] 한글 초성 검색 함수 2016.12.08 9087
65 [Oracle] 테이블 스페이스 및 사용자 계정 생성 방법 2016.12.08 8572
64 [Oracle] Rownum을 이용한 페이징 처리 2016.12.08 10385
63 [Oracle] DB Export, Import 방법 2016.12.08 12607
» [Oracle SQL] 여러 행(ROW)을 하나의 컬럼(COLUMN)으로 합치기 (WM_CONCAT) file 2016.12.08 20008
Board Pagination Prev 1 2 3 4 5 6 7 Next
/ 7

하단 정보를 입력할 수 있습니다

© k2s0o1d4e0s2i1g5n. All Rights Reserved