해당 데이터로 쿼리를 돌렸을때는 아무런 문제없이 컴파일이 잘됩니다.
헌데 실질적으로 Table에 있는 데이터로 쿼리를 돌렸을때 ORA-24344 컴파일 에러가 납니다.
도대체 왜 그러는지 이해를 모르겠네요!!
실질적인 Table(CARCALC)에는 데이터가 33건이 존재합니다.
쿼리를 잘못 짰다면 아래의 테스트 데이터를 가지고 했을때 되지 말아햐 하는데 잘 돌아가니 정말 미치겠습니다.
고수님들!! 속시원하게 알려주세요~~
WITH CARCALC AS(
SELECT 58 homecalcno, '2011-07-17' expensesdate, 'E-MART 파주점' expensesarea, 3800 expensesmoney, 0 litermoney, 0 acckilometer, 'c-004' code, 'c-004003' subcode, 0 gasoline FROM dual UNION ALL
SELECT 57 homecalcno, '2011-07-02' expensesdate, '설문주유소(봉일천)' expensesarea, 61000 expensesmoney, 1958 litermoney, 46334 acckilometer, 'c-001' code, 'c-001001' subcode, 31.154 gasoline FROM dual UNION ALL
SELECT 54 homecalcno, '2011-06-25' expensesdate, '가산역_공영주차장' expensesarea, 4000 expensesmoney, 0 litermoney, 0 acckilometer, 'c-001' code, 'c-001003' subcode, 0 gasoline FROM dual UNION ALL
SELECT 52 homecalcno, '2011-06-11' expensesdate, '금촌_제2공영 주차장' expensesarea, 1250 expensesmoney, 0 litermoney, 0 acckilometer, 'c-001' code, 'c-001001' subcode, 0 gasoline FROM dual UNION ALL
SELECT 50 homecalcno, '2011-05-28' expensesdate, '월드컵공원주차장' expensesarea, 4000 expensesmoney, 0 litermoney, 0 acckilometer, 'c-001' code, 'c-001003' subcode, 0 gasoline FROM dual UNION ALL
SELECT 49 homecalcno, '2011-05-28' expensesdate, '설문주유소(봉일천)' expensesarea, 62000 expensesmoney, 1938 litermoney, 45860 acckilometer, 'c-001' code, 'c-001001' subcode, 31.992 gasoline FROM dual UNION ALL
SELECT 46 homecalcno, '2011-05-14' expensesdate, '설문주유소(봉일천)' expensesarea, 20000 expensesmoney, 1971 litermoney, 45647 acckilometer, 'c-001' code, 'c-001001' subcode, 10.147 gasoline FROM dual UNION ALL
SELECT 44 homecalcno, '2011-05-08' expensesdate, '사천영업소 To' expensesarea, 7000 expensesmoney, 0 litermoney, 0 acckilometer, 'c-001' code, 'c-001002' subcode, 0 gasoline FROM dual UNION ALL
SELECT 43 homecalcno, '2011-05-08' expensesdate, '향촌SK주유소' expensesarea, 52000 expensesmoney, 1999 litermoney, 45130 acckilometer, 'c-001' code, 'c-001001' subcode, 26.014 gasoline FROM dual UNION ALL
SELECT 42 homecalcno, '2011-05-07' expensesdate, '동서울영업소 To' expensesarea, 6900 expensesmoney, 0 litermoney, 0 acckilometer, 'c-001' code, 'c-001002' subcode, 0 gasoline FROM dual UNION ALL
SELECT 40 homecalcno, '2011-05-07' expensesdate, '설문주유소(봉일천)' expensesarea, 55000 expensesmoney, 1970 litermoney, 44714 acckilometer, 'c-001' code, 'c-001001' subcode, 27.919 gasoline FROM dual UNION ALL
SELECT 38 homecalcno, '2011-02-23' expensesdate, '옥션_타이어공기주입기' expensesarea, 54000 expensesmoney, 0 litermoney, 0 acckilometer, 'c-004' code, 'c-004018' subcode, 0 gasoline FROM dual UNION ALL
SELECT 36 homecalcno, '2011-04-17' expensesdate, '설문주유소(봉일천)' expensesarea, 60000 expensesmoney, 1919 litermoney, 44279 acckilometer, 'c-001' code, 'c-001001' subcode, 31.266 gasoline FROM dual UNION ALL
SELECT 34 homecalcno, '2011-04-01' expensesdate, '설문주유소(봉일천)' expensesarea, 52000 expensesmoney, 1919 litermoney, 43706 acckilometer, 'c-001' code, 'c-001001' subcode, 27.097 gasoline FROM dual UNION ALL
SELECT 30 homecalcno, '2011-03-06' expensesdate, '속초시_장원주유소' expensesarea, 47000 expensesmoney, 1949 litermoney, 43236acckilometer, 'c-001' code, 'c-001001' subcode, 24.115 gasoline FROM dual
), CARCALCSUBCODE AS(
SELECT 'c-001001' subcode, '유류비' subcodename, 'c-001' code FROM dual UNION ALL
SELECT 'c-001002' subcode, '톨게이트비' subcodename, 'c-001' code FROM dual UNION ALL
SELECT 'c-001003' subcode, '주차비' subcodename, 'c-001' code FROM dual UNION ALL
SELECT 'c-004003' subcode, '방향제' subcodename, 'c-004' code FROM dual UNION ALL
SELECT 'c-004018' subcode, '타이어공기주입기' subcodename, 'c-004' code FROM dual
)
SELECT a.subcode, a.subcodename
, DECODE(a.expensesmoney,NULL,0,a.expensesmoney) expensesmoney
, a.inputcnt
, DECODE(((a.expensesmoney / b.money2) * 100),NULL,0,ROUND(((a.expensesmoney / b.money2) * 100),1)) monthly
FROM
(
SELECT DECODE(GROUPING(cs.subcode),1,'지출코드',cs.subcode) subcode
, DECODE(cs.subcodename,null,'계',cs.subcodename) subcodename
, SUM(c.EXPENSESMONEY) expensesmoney
, COUNT(c.SUBCODE) inputcnt
FROM CARCALCSUBCODE cs, CARCALC c
WHERE cs.SUBCODE = c.SUBCODE(+)
AND SUBSTR(c.EXPENSESDATE(+), 1, 4) = '2011'
AND SUBSTR(c.EXPENSESDATE(+), 6, 2) = '02'
-- GROUP BY cs.SUBCODE, cs.SUBCODENAME
GROUP BY ROLLUP((cs.subcode, cs.subcodename))
ORDER BY 1 ASC
)a
,
(
SELECT SUM(expensesmoney) money2
FROM CARCALC
WHERE SUBSTR(expensesdate, 1, 4) = '2011'
AND SUBSTR(expensesdate, 6, 2) = '02'
)b;
|