现在有六个表作全外连接,报错ORA-03113和ORA-03114,如果注释掉BCDEF中的任意一个,执行都没有问题,各位大侠,帮帮我!
SQL如下:SELECT
A.PLAN_MONTH AS PLAN_MONTH,
B.IN_DAY AS IN_DAY,
C.IN_MONTH AS IN_MONTH,
D.FINISHED AS FINISHED,
D.SEMIS AS SEMIS,
E.OUT_DAY AS OUT_DAY,
F.OUT_MONTH AS OUT_MONTH
FROM
(SELECT SIDELINE_CODE AS CODE,sideline_code||'1' as codea,PLAN AS PLAN_MONTH
FROM TBL_PA_PROD_SCHEDULE SCHEDULE
WHERE SIDELINE_CODE='P_KER'
AND REPORT_DATE='2008-01'
)A
full outer join
(SELECT ITEM_CODE AS CODE,DAILY_DATA AS IN_DAY
FROM TBL_PA_OIL_POWERCOST_DAILY
WHERE ITEM_CODE='P_KER'
AND REPORT_DATE='2008-01-23'
)B
on a.code=b.code
full outer join
(SELECT ITEM_CODE AS CODE,SUM(DAILY_DATA) AS IN_MONTH
FROM TBL_PA_OIL_POWERCOST_DAILY
WHERE ITEM_CODE='P_KER'
AND REPORT_DATE>='2008-01-01'
AND REPORT_DATE<='2008-01-23'
GROUP BY ITEM_CODE
)C
on a.code=c.code
full outer join
(SELECT
T_A.PRODUCT_CODE AS CODE,
SUM(DECODE(T_A.STATUS,'ºÏ¸ñ',T_A.QUALITY,0)) AS FINISHED,
SUM(DECODE(T_A.STATUS,'ºÏ¸ñ',0,T_A.QUALITY)) AS SEMIS
FROM TBL_TANK_QUALITY_CAL T_A,
(SELECT MAX(CHECK_RULER_DATE) AS RULER_DATE,TANK_ID
FROM TBL_TANK_QUALITY_CAL
WHERE CHECK_RULER_DATE<=TO_DATE('2008-01-23 4:00:00','YYYY-MM-DD HH24:MI:SS')
GROUP BY TANK_ID
)T_B
WHERE T_A.TANK_ID=T_B.TANK_ID
AND T_A.CHECK_RULER_DATE=T_B.RULER_DATE
AND SUBSTR(T_B.TANK_ID,1,4)='TK_S'
AND T_A.PRODUCT_CODE='P_KER'
GROUP BY T_A.PRODUCT_CODE
)D
on a.code=d.code
full outer join
(SELECT ITEM_CODE AS CODE,DAILY_DATA AS OUT_DAY
FROM TBL_PA_OIL_POWERCOST_DAILY
WHERE ITEM_CODE='P_KER'||'1'
AND REPORT_DATE='2008-01-23'
)E
on a.codea=e.code
full outer join
(SELECT ITEM_CODE AS CODE,SUM(DAILY_DATA) AS OUT_MONTH
FROM TBL_PA_OIL_POWERCOST_DAILY
WHERE ITEM_CODE='P_KER'||'1'
AND REPORT_DATE>='2008-01-01'
AND REPORT_DATE<='2008-01-23'
GROUP BY ITEM_CODE
)F
on a.codea=f.code
SQL如下:SELECT
A.PLAN_MONTH AS PLAN_MONTH,
B.IN_DAY AS IN_DAY,
C.IN_MONTH AS IN_MONTH,
D.FINISHED AS FINISHED,
D.SEMIS AS SEMIS,
E.OUT_DAY AS OUT_DAY,
F.OUT_MONTH AS OUT_MONTH
FROM
(SELECT SIDELINE_CODE AS CODE,sideline_code||'1' as codea,PLAN AS PLAN_MONTH
FROM TBL_PA_PROD_SCHEDULE SCHEDULE
WHERE SIDELINE_CODE='P_KER'
AND REPORT_DATE='2008-01'
)A
full outer join
(SELECT ITEM_CODE AS CODE,DAILY_DATA AS IN_DAY
FROM TBL_PA_OIL_POWERCOST_DAILY
WHERE ITEM_CODE='P_KER'
AND REPORT_DATE='2008-01-23'
)B
on a.code=b.code
full outer join
(SELECT ITEM_CODE AS CODE,SUM(DAILY_DATA) AS IN_MONTH
FROM TBL_PA_OIL_POWERCOST_DAILY
WHERE ITEM_CODE='P_KER'
AND REPORT_DATE>='2008-01-01'
AND REPORT_DATE<='2008-01-23'
GROUP BY ITEM_CODE
)C
on a.code=c.code
full outer join
(SELECT
T_A.PRODUCT_CODE AS CODE,
SUM(DECODE(T_A.STATUS,'ºÏ¸ñ',T_A.QUALITY,0)) AS FINISHED,
SUM(DECODE(T_A.STATUS,'ºÏ¸ñ',0,T_A.QUALITY)) AS SEMIS
FROM TBL_TANK_QUALITY_CAL T_A,
(SELECT MAX(CHECK_RULER_DATE) AS RULER_DATE,TANK_ID
FROM TBL_TANK_QUALITY_CAL
WHERE CHECK_RULER_DATE<=TO_DATE('2008-01-23 4:00:00','YYYY-MM-DD HH24:MI:SS')
GROUP BY TANK_ID
)T_B
WHERE T_A.TANK_ID=T_B.TANK_ID
AND T_A.CHECK_RULER_DATE=T_B.RULER_DATE
AND SUBSTR(T_B.TANK_ID,1,4)='TK_S'
AND T_A.PRODUCT_CODE='P_KER'
GROUP BY T_A.PRODUCT_CODE
)D
on a.code=d.code
full outer join
(SELECT ITEM_CODE AS CODE,DAILY_DATA AS OUT_DAY
FROM TBL_PA_OIL_POWERCOST_DAILY
WHERE ITEM_CODE='P_KER'||'1'
AND REPORT_DATE='2008-01-23'
)E
on a.codea=e.code
full outer join
(SELECT ITEM_CODE AS CODE,SUM(DAILY_DATA) AS OUT_MONTH
FROM TBL_PA_OIL_POWERCOST_DAILY
WHERE ITEM_CODE='P_KER'||'1'
AND REPORT_DATE>='2008-01-01'
AND REPORT_DATE<='2008-01-23'
GROUP BY ITEM_CODE
)F
on a.codea=f.code
不过根本到不了执行计划那一步的
再sql语句解析的时候就已经错了
oracle就不会再出执行计划了