2018년 2월 4일 일요일

SQL에서의 소계 처리(ROLLUP)

오라클 데이타베이스에서 소계합계처리는 다음과 같이 ROLLUP함수 사용

WITH P AS (
SELECT   '20100901'  AS FM_YMD       -- 시작검색일
        ,'20101231'  AS TO_YMD       -- 종료검색일
FROM DUAL
)
SELECT      /*+ PARALLEL(SND,2) */
            DISTINCT
             SND.SND_TYP        "발송유형"
            ,SND.SND_YMD        "발송일자"
            ,COUNT(*)           "발송수량"
            ,SUM(CASE WHEN SND_SUCC_YN = 'Y' THEN 1 ELSE 0 END) "발송성공"
            ,SUM(CASE WHEN RCV_CFM_YN = 'Y' THEN 1 ELSE 0 END) "열람확인"
            ,GROUPING_ID(SND.SND_TYP) gid
FROM        POW_BC.TB_BFSCAP_CNSNT_SND_HIST SND
WHERE       1 = 1
AND         SND.SND_YMD BETWEEN (SELECT FM_YMD FROM P) AND (SELECT TO_YMD FROM P)
GROUP BY    ROLLUP(SND.SND_TYP,SND.SND_YMD)
ORDER BY SND.SND_TYP

댓글 없음:

댓글 쓰기

Creating CRC32 Hex string

public String getCRC32HexaString(String paramString) throws Exception  {   byte bytes[] = paramString.getBytes(DEFAULT_CHARSET);   Che...