oracle view left outer join 问题
CREATE OR REPLACE VIEW EMS_EMEASURE_WEEK_VIEW AS
(SELECT T1.EMS_EMPL_INFO_WEEK_ID,
T1.E_MEASURE_ID,
T1.DAY_IN_YEAR,
EMS_EMEASURE_AMPM_VIEW.BIZ,
EMS_EMEASURE_AMPM_VIEW.PRONAME,
EMS_EMEASURE_AMPM_VIEW.PM,
EMS_EMEASURE_AMPM_VIEW.PMID,
EMS_EMEASURE_AMPM_VIEW.AM,
EMS_EMEASURE_AMPM_VIEW.AMID
FROM (SELECT EMS_EMPL_INFO_WEEK.EMS_EMPL_INFO_WEEK_ID,
EMS_EMPL_INFO_WEEK.E_MEASURE_ID,
EMS_EMPL_INFO_WEEK.DAY_IN_YEAR
FROM EMS_EMPL_INFO_WEEK
WHERE EMS_EMPL_INFO_WEEK.E_MEASURE_ID IS NOT NULL) T1
LEFT OUTER JOIN EMS_EMEASURE_AMPM_VIEW ON T1.E_MEASURE_ID =
EMS_EMEASURE_AMPM_VIEW.EID)
使用另一张表和该view左连接
SELECT T1.DATE_VALUE,
T2.DAY_IN_YEAR,
T2.EMS_EMPL_INFO_WEEK_ID,
T2.E_MEASURE_ID
FROM (SELECT DATE_DIM.DATE_VALUE
FROM DATE_DIM
WHERE DATE_DIM.DATE_VALUE = TO_DATE('11/16/2011', 'MM/DD/YYYY')) T1
LEFT OUTER JOIN (SELECT *
FROM EMS_EMEASURE_WEEK_VIEW
WHERE EMS_EMEASURE_WEEK_VIEW.DAY_IN_YEAR =
TO_DATE('11/16/2011', 'MM/DD/YYYY')) T2 ON T1.DATE_VALUE =
T2.DAY_IN_YEAR
出来3w+条数据
如果不是用view而是直接使用表连接
SELECT T1.DATE_VALUE,
T2.DAY_IN_YEAR,
T2.EMS_EMPL_INFO_WEEK_ID,
T2.E_MEASURE_ID
FROM (SELECT DATE_DIM.DATE_VALUE
FROM DATE_DIM
WHERE DATE_DIM.DATE_VALUE = TO_DATE('11/16/2011', 'MM/DD/YYYY')) T1
LEFT OUTER JOIN (SELECT *
FROM EMS_EMPL_INFO_WEEK
WHERE EMS_EMPL_INFO_WEEK.DAY_IN_YEAR =
TO_DATE('11/16/2011', 'MM/DD/YYYY')
AND EMS_EMPL_INFO_WEEK.E_MEASURE_ID IS NOT NULL) T2 ON T1.DATE_VALUE =
T2.DAY_IN_YEAR
却只有300+条正确的数据~
纠结了一天,无法解决。。。
feiyue3008

浙公网安备 33010602011771号