일자별로 정리된 자료를 월계와 누계를 구하는 쿼리 입니다 .
여기서 월계와 누계는 무리없이 구해지나
년이 바뀌면서 누계 금액을따로 구분해야 합니다 .
하지만 누계 부분에서 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년 해가 바뀐다 해도 누계는 이월되지 않아야함 .
고수님들 한번 확인해 주셧으면 합니다.