카테고리 없음

[Oracle] 문자열 연결 기능(XMLAgg, WM_CONCAT, LISTAGG)

Edward. K 2020. 6. 15. 16:09
반응형

- Oracle 버전 확인

SELECT * FROM V$VERSION;


- 조회 결과를 하나의 컬럼에 나타내고자 할때.. 다음과 같은 결과를 

    SELECT ERR_MSG 
    FROM  T_ERR_TEST 
    WHERE ERR_SEQ = '12341234' 

- Oracle 버전별 문자열 연결

  SELECT SUBSTR(XMLAgg(XMLELEMENT(x, '</br>', ERR_MSG) ORDER BY ERR_MSG).EXTRACT('//text()'), 2) "9i"
        , WM_CONCAT(ERR_MSG) "10g"
        , LISTAGG(ERR_MSG, '</br>') WITHIN GROUP(ORDER BY ERR_MSG) "11g"
  FROM T_ERR_TEST  
  WHERE ERR_SEQ = '12341234'  

 

EXAMPLE 2.
-

SELECT  MSG_CODE || ':' || COUNT(*) AS MSG 
FROM T_MSG_INFO
WHERE MSG_FLAG = 'Y'
  AND TO_CHAR(MSG_DATE,'YYYYMMDDHH24MISS') <= TO_CHAR(SYSDATE - 0.1/24,'yyyymmddhh24miss') 
  AND TO_CHAR(MSG_DATE,'YYYYMMDDHH24MISS') >= TO_CHAR(SYSDATE -   1/24,'yyyymmddhh24miss')  
GROUP BY MSG_CODE 
ORDER BY MSG_CODE

  
SELECT  
      RTRIM(XMLAGG(XMLELEMENT("nm", MSG||'건,')).EXTRACT('//text()').GETSTRINGVAL(), ',')  AS MSG_INFO
FROM (
     SELECT  MSG_CODE || ':' || COUNT(*) AS MSG 
     FROM T_MSG_INFO
     WHERE MSG_FLAG = 'Y'
       AND TO_CHAR(MSG_DATE,'YYYYMMDDHH24MISS') <= TO_CHAR(SYSDATE - 0.1/24,'yyyymmddhh24miss') 
       AND TO_CHAR(MSG_DATE,'YYYYMMDDHH24MISS') >= TO_CHAR(SYSDATE -   1/24,'yyyymmddhh24miss')  
     GROUP BY MSG_CODE 
     ORDER BY MSG_CODE
    )

 

 

반응형