rollup을 사용한 누계 입니다. 0 1 3,164

by 박상현 [2008.02.15 16:14:27]


일자별로 정리된 자료를  월계와 누계를 구하는 쿼리 입니다 .
여기서 월계와 누계는 무리없이 구해지나  
년이 바뀌면서 누계 금액을따로 구분해야 합니다 .
하지만 누계 부분에서  PARTITON BY 분석 함수를 사용하면 누계 결과값이 밑으로
밀려 중간중간 누계 구분이 가질 않았습니다 .
고수님들 도움줌 주십사 하고 이렇게 글을 씁니다 .

SELECT   FRN_NO,
         YM,
         ISSUE_YMD,
         DEAL_NO,
         ACCT_CD,
         DECODE (GROUPING (REMARKS), 0, REMARKS, 1, DECODE (GROUPING (YEAR), 0, '소계', 1, '누계')) AS REMARKS,
         DECODE (GROUPING (YEAR), 0, SUM (IN_AMT), 1, SUM (IN_AMT) OVER (ORDER BY YM)) AS IN_AMT,
         DECODE (GROUPING (YEAR), 0, SUM (OUT_AMT), 1, SUM (OUT_AMT) OVER (ORDER BY YM)) AS OUT_AMT
    FROM (SELECT FRN_NO,
                 SUBSTR (ISSUE_YMD, 0, 4) AS YEAR,
                 SUBSTR (ISSUE_YMD, 0, 6) AS YM,
                 ISSUE_YMD,
                 DEAL_NO,
                 ACCT_CD,
                 REMARKS,
                 IN_AMT,
                 OUT_AMT
            FROM TBL050101
           WHERE FRN_NO = :FRN_NO
             AND ISSUE_YMD BETWEEN :FIRST_YMD AND :SECOND_YMD)
GROUP BY YM, ROLLUP (YEAR, (FRN_NO, ISSUE_YMD, DEAL_NO, ACCT_CD, REMARKS, IN_AMT, OUT_AMT, YEAR))

고객사 번호   년월    년원일   번호   계정코드    적 요           수입금액 지출금액
                                                                                      
230100400003 200710 20071001 000121 132       수수료       0       10000  
                   200710                     소계         0       10000  
                   200710                     누계         0       10000  
230100400003 200711 20071113 000083 111      보육료수입    12333   0      
230100400003 200711 20071113 000084 112      수익자부담금  444     0      
                   200711                     소계         12777   0      
                   200711                     누계         12777   10000  
230100400003 200712 20071205 000122 312       수입         29999   0      
230100400003 200712 20071206 000123 113       지출         0       54555  
                   200712                     소계        29999  54555  
                   200712                     누계        42776  64555  
230100400003 200801 20080101 000080 111       반납결의서  10000   0      
230100400003 200801 20080110 000120 132       시스템      0       -101000
230100400003 200801 20080120 000081 111       태스트      200000 0      
                   200801                     소계        210000 -101000
                   200801                     누계        252776 -36445         <---- 정답은 2008년 누계금액이 210000   -36445

2007년 2008년 해가 바뀐다 해도 누계는 이월되지 않아야함 .

고수님들 한번 확인해 주셧으면 합니다.

 

by 마농 [2008.02.18 00:00:00]
GROUP BY ROLLUP(year, ym, (...))
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입