sql:
--[°èÁ¤º°Àܾ×Àå] --ÀÎÀÚ : ȸ°è´ÜÀ§ -- ½ÃÀÛÀÏ ~ Á¾·áÀÏ : 20090315 ~ 20090520 -- ³â0101 ~ ½ÃÀÛÀÏ -1 : 20090101 ~ 20090314 -- °èÁ¤ÄÚµå : 1231500
--ÃÑÇÕ°è ±¸Çϱâ SELECT DECODE(GROUPING_ID(DTLACCOUNTNAME, BEFORE_AMT), 3, 'ÇÕ°è', DTLACCOUNTNAME) DTLACCOUNTNAME , BEFORE_AMT , SUM(DR_AMT) DR_AMT , SUM(CR_AMT) CR_AMT , SUM(TODAY_AMT) TODAY_AMT FROM ( --°èÁ¤º° ÀüÀÏÀܾ×, ±ÝÀÏÀÜ¾× ±¸Çϱâ SELECT '(' || B.DTLACCOUNTCD || ')' || B.DTLACCOUNTNAME AS DTLACCOUNTNAME --¼¼¸ñ¸í , DECODE(B.DRCRCD, 'TFN2510', BEFORE_DR_AMT - BEFORE_CR_AMT , BEFORE_CR_AMT - BEFORE_DR_AMT) AS BEFORE_AMT --ÀüÀÏÀÜ¾× , DR_AMT , CR_AMT , DECODE(B.DRCRCD, 'TFN2510', BEFORE_DR_AMT + DR_AMT - BEFORE_CR_AMT - CR_AMT , BEFORE_CR_AMT + CR_AMT - BEFORE_DR_AMT - DR_AMT) AS TODAY_AMT --±ÝÀÏÀÜ¾× FROM ( --°èÁ¤º° ÇÕ°è SELECT ACCOUNTCD , DTLACCOUNTCD , SUM(CASE WHEN SLIPDATE >= '20090101' AND SLIPDATE <= '20090314' AND DRCRCD = 'TFN2510' THEN AMT ELSE 0 END ) BEFORE_DR_AMT , SUM(CASE WHEN SLIPDATE >= '20090101' AND SLIPDATE <= '20090314' AND DRCRCD = 'TFN2520' THEN AMT ELSE 0 END ) BEFORE_CR_AMT , SUM(CASE WHEN SLIPDATE >= '20090315' AND SLIPDATE <= '20090520' AND DRCRCD = 'TFN2510' THEN AMT ELSE 0 END ) DR_AMT , SUM(CASE WHEN SLIPDATE >= '20090315' AND SLIPDATE <= '20090520' AND DRCRCD = 'TFN2520' THEN AMT ELSE 0 END ) CR_AMT FROM ( SELECT ACCOUNTCD, DTLACCOUNTCD, SLIPDATE, DRCRCD, SUM(AMT) AMT FROM BH_SLIPSLV WHERE ACCOUNTUNITCD = 'TBD0001' AND SLIPDATE BETWEEN '20090101' AND '20090520' AND ACCOUNTCD = '1231500' GROUP BY ACCOUNTCD, DTLACCOUNTCD, SLIPDATE, DRCRCD ) GROUP BY ACCOUNTCD, DTLACCOUNTCD ) A JOIN BH_ACCOUNTS B ON ( A.ACCOUNTCD = B.ACCOUNTCD AND A.DTLACCOUNTCD = B.DTLACCOUNTCD AND B.ACCOUNTUNITCD = 'TBD0001' ) ) WHERE BEFORE_AMT > 0 OR DR_AMT > 0 OR CR_AMT > 0 OR TODAY_AMT > 0 GROUP BY ROLLUP(DTLACCOUNTNAME, BEFORE_AMT) HAVING GROUPING_ID(DTLACCOUNTNAME, BEFORE_AMT) IN (0, 3) ORDER BY DTLACCOUNTNAME
|