CREATE OR REPLACE VIEW V_RES_CBA AS SELECT /*+INDEX(SEG IDX_T_RES_ALLOSEG_ALLOID)*/ ALLO.ALLOID AS RESID, NULL AS AWB, ALLO.ALLOTMENT AS ALLO_ID, DAYS.FDATE + NVL(SEG.DAYSDISP, 0) AS FDATE, ALLO.SPECULD AS SPECULD FROM T_RES_ALLO ALLO, T_RES_ALLOSEG SEG, V_FDATE DAYS WHERE ALLO.ALLOID = SEG.ALLOID AND ((ALLO.ALLOIND = 'A' AND ALLO.ALLO_DATE = DAYS.FDATE) OR (ALLO.ALLOIND = 'S' AND NVL(ALLO.SDATE, ALLO.ALLO_DATE) = DAYS.FDATE)) UNION SELECT /*+INDEX(SEG IDX_T_RES_ALLOSEG_ALLOID)*/ ALLO.ALLOID AS RESID, NULL AS AWB, ALLO.ALLOTMENT AS ALLO_ID, DAYS.FDATE + NVL(SEG.DAYSDISP, 0) AS FDATE, ALLO.SPECULD AS SPECULD FROM T_RES_ALLO ALLO, T_RES_ALLOSEG SEG, V_FDATE DAYS WHERE ALLO.ALLOID = SEG.ALLOID AND ALLO.ALLO_DATE IS NULL AND ALLO.ALLOIND = 'A' AND (DAYS.FDATE >= ALLO.SDATE AND DAYS.FDATE <= ALLO.EDATE AND INSTR(ALLO.WEEKDAY, DAYS.WEEKDAY) > 0) AND NOT EXISTS (SELECT subQuery.ALLOID from T_RES_ALLO subQuery where subQuery.ALLO_DATE = DAYS.FDATE and subQuery.ALLOTMENT = ALLO.ALLOTMENT)