IT정리노트

블로그 이미지

Edward. K

메멘토적 기억능력을 소유한 개발자 노트.

여러 행을 하나의 컬럼으로 합치기

DB/Oracle 2010. 8. 6. 17:07
반응형

GROUP BY 절로 묶을때 여러행의 정보를 하나의 컬럼에 나타내야할 필요가 있다.


아래와 같은 방법으로 손쉽게 여러행의 데이터를 한 컬럼으로 합칠 수 있다. .



 1. XMLAGG, XMLELEMENT 

     order by 에 의한 조합 순서 조정이 필요한 경우

 2. WM_CONCAT 

     묶이는 순서대로 자동



-- SAMPLE QUERY 

WITH COL_LIST_TEMP AS (

                            SELECT '1' AS T_CD , 4 AS seq ,  '일'      AS T_NAME FROM DUAL 

    UNION ALL   SELECT '1' AS T_CD , 2 AS seq ,  'ONE' AS T_NAME FROM DUAL

    UNION ALL   SELECT '1' AS T_CD , 3 AS seq ,  '하나'  AS T_NAME FROM DUAL

    UNION ALL   SELECT '1' AS T_CD , 1 AS seq ,  '처음'  AS T_NAME FROM DUAL

    UNION ALL   SELECT '2' AS T_CD , 2 AS seq ,  '둘'      AS T_NAME FROM DUAL

    UNION ALL   SELECT '2' AS T_CD , 1 AS seq ,  'TWO' AS T_NAME FROM DUAL

) 

SELECT DECODE(T_CD,'1','1','2') AS T_CD 

              , COUNT(*) as CNT

              ,  SUBSTR(XMLAGG( XMLELEMENT( X, ',' , T_NAME ) ORDER BY  seq ).EXTRACT('//text()'),2 ) AS T_LIST  

              , WM_CONCAT(T_NAME) AS T_LIST2

  FROM COL_LIST_TEMP 

  GROUP BY T_CD    




[**]   XMLAGG, XMLELEMENT    이녀석을 스탭별로 진행해보자..


      #  .getStringVal()  :    XML*** 는 xml 데이터 형식으로 가져오므로.. String 으로 변환.


 

WITH COL_LIST_TEMP AS (

                            SELECT '1' AS T_CD , 4 AS seq ,  '일'      AS T_NAME FROM DUAL 

    UNION ALL   SELECT '1' AS T_CD , 2 AS seq ,  'ONE' AS T_NAME FROM DUAL

    UNION ALL   SELECT '1' AS T_CD , 3 AS seq ,  '하나'  AS T_NAME FROM DUAL

    UNION ALL   SELECT '1' AS T_CD , 1 AS seq ,  '처음'  AS T_NAME FROM DUAL

    UNION ALL   SELECT '2' AS T_CD , 2 AS seq ,  '둘'      AS T_NAME FROM DUAL

    UNION ALL   SELECT '2' AS T_CD , 1 AS seq ,  'TWO' AS T_NAME FROM DUAL

) 

SELECT 'step1' as testId , T_CD

  , xmlelement(a,T_NAME).getStringVal() val      -- <A>TWO</A>

FROM COL_LIST_TEMP

union ALL  

SELECT 'step2' as testId  ,T_CD

  , xmlagg(xmlelement(a,T_NAME)).getStringVal() val2     -- <A>둘</A><A>TWO</A>

FROM COL_LIST_TEMP  GROUP BY T_CD

union ALL  

SELECT 'step3' as testId  ,T_CD

  , xmlagg(xmlelement(a,T_NAME) order by T_NAME ).extract('//text()').getStringVal() val2  -- TWO둘

FROM COL_LIST_TEMP GROUP BY T_CD

union ALL  

SELECT 'step4' as testId  ,T_CD

 , xmlagg(xmlelement(a,',' ||T_NAME) order by T_NAME ).extract('//text()').getStringVal() val2   -- ,TWO,둘

FROM COL_LIST_TEMP GROUP BY T_CD

union ALL  

SELECT 'step4' as testId  ,T_CD

  , substr(xmlagg(xmlelement(a,',' ||T_NAME) order by T_NAME ).extract('//text()'), 2) val2   -- TWO,둘

FROM COL_LIST_TEMP GROUP BY T_CD



반응형
저작자표시 비영리 변경금지 (새창열림)
Posted by Edward. K
블로그 이미지

메멘토적 기억능력을 소유한 개발자 노트.

by Edward. K

공지사항

    최근...

  • 포스트
  • 댓글
  • 트랙백
  • 더 보기

태그

  • 미네르바
  • 가상화폐무료
  • ERwin
  • 개한민국
  • toad
  • android
  • iBATIS
  • 플래시 게임
  • flex
  • 색상코드표
  • egov
  • 사업 이야기
  • eclipse plugin
  • Flash Player
  • Jboss
  • 컴퓨터 관리
  • Eclipse
  • Graphic
  • netbeans
  • sqlgate
  • rocketdock
  • EkNote
  • tomcat
  • 전자정부프레임워크
  • 이클립스
  • 이미지 편집
  • EditPlus
  • STS
  • 중독성게임
  • 캡쳐툴

글 보관함

«   2026/01   »
일 월 화 수 목 금 토
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31

링크

카테고리

분류 전체보기 (792)
행운이와함께 (1)
EkNote Project (18)
ARIS (0)
Android (2)
LINK (39)
UML (9)
Programming (154)
Cobol (0)
ASP (0)
CSS (5)
C_C++ (2)
IBatis (2)
JSP (3)
JAVA (76)
JavaScript (44)
PHP (2)
Utility (76)
Protable (3)
MobileProgram (4)
SKT (0)
KTF (0)
LGT (0)
자료들 (4)
DB (82)
mongoDB (0)
MySQL (8)
Oracle (61)
MSSQL (4)
Graphic (8)
Flash (3)
PhotoShop (3)
SourceFactory (4)
Collection (73)
작가의기막힌상상력 (14)
미소를찾아보는공간 (44)
내심장은작동중일까 (6)
멀더와스컬리의노트 (3)
이건어디에사용할까 (6)
Edward (275)
나만 알기엔 아까워 (100)
기억하기 위한 기록 (123)
시선이 머무는 공간 (50)
숨기고 싶은 이야기 (2)

카운터

Total
Today
Yesterday
방명록 : 관리자 : 글쓰기
Edward. K's Blog is powered by daumkakao
Skin info material T Mark3 by 뭐하라
favicon

IT정리노트

메멘토적 기억능력을 소유한 개발자 노트.

  • 태그
  • 링크 추가
  • 방명록

관리자 메뉴

  • 관리자 모드
  • 글쓰기
  • 분류 전체보기 (792)
    • 행운이와함께 (1)
    • EkNote Project (18)
    • ARIS (0)
    • Android (2)
    • LINK (39)
    • UML (9)
    • Programming (154)
      • Cobol (0)
      • ASP (0)
      • CSS (5)
      • C_C++ (2)
      • IBatis (2)
      • JSP (3)
      • JAVA (76)
      • JavaScript (44)
      • PHP (2)
    • Utility (76)
      • Protable (3)
    • MobileProgram (4)
      • SKT (0)
      • KTF (0)
      • LGT (0)
      • 자료들 (4)
    • DB (82)
      • mongoDB (0)
      • MySQL (8)
      • Oracle (61)
      • MSSQL (4)
    • Graphic (8)
      • Flash (3)
      • PhotoShop (3)
    • SourceFactory (4)
    • Collection (73)
      • 작가의기막힌상상력 (14)
      • 미소를찾아보는공간 (44)
      • 내심장은작동중일까 (6)
      • 멀더와스컬리의노트 (3)
      • 이건어디에사용할까 (6)
    • Edward (275)
      • 나만 알기엔 아까워 (100)
      • 기억하기 위한 기록 (123)
      • 시선이 머무는 공간 (50)
      • 숨기고 싶은 이야기 (2)

카테고리

PC화면 보기 티스토리 Daum

티스토리툴바