Oracle SQL中 (+) 不能出现在 OR 字句中
Oracle8i 数据库,SQL语句如下:
SELECT distinct L.FLT_NR "航班号",
S.SCH_DEP_DT + 1 / 3 "起飞时间(北京时)",
S.DEP_ARP_CD "起飞站",
S.ARV_ARP_CD "落地站",
S.LATEST_TAIL_NR "机尾号",
C.FCAP "外籍机组"
FROM (SELECT '3067' FLT_NR
FROM DUAL
UNION
SELECT '0321'
FROM DUAL
UNION
SELECT '0325'
FROM DUAL
UNION
SELECT '0327'
FROM DUAL
UNION
SELECT '0345'
FROM DUAL
UNION
SELECT '0455'
FROM DUAL
UNION
SELECT '0467'
FROM DUAL
UNION
SELECT '0383'
FROM DUAL
UNION
SELECT '0359'
FROM DUAL
UNION
SELECT '0301'
FROM DUAL
UNION
SELECT '0302' FROM DUAL) L,
(SELECT *
FROM SCH_DOPS_SOFL S
WHERE S.SCH_DEP_DT BETWEEN SYSDATE - 1 / 3 AND
TRUNC(SYSDATE) - 1 / 3 + 1 + 11 / 24) S,
(select s.flt_dt, a.flt_nr, s.flt_nr as back_flt_nr, s.latest_tail_nr
from Sch_dops_sofl s,
(select s.flt_nr,
s.latest_tail_nr,
s.sch_dep_dt,
s.sch_arv_dt,
s.dep_arp_cd,
s.arv_arp_cd
from Sch_dops_sofl s,
(SELECT '3067' FLT_NR
FROM DUAL
UNION
SELECT '0321'
FROM DUAL
UNION
SELECT '0325'
FROM DUAL
UNION
SELECT '0327'
FROM DUAL
UNION
SELECT '0345'
FROM DUAL
UNION
SELECT '0455'
FROM DUAL
UNION
SELECT '0467'
FROM DUAL
UNION
SELECT '0383'
FROM DUAL
UNION
SELECT '0359'
FROM DUAL
UNION
SELECT '0301'
FROM DUAL
UNION
SELECT '0302' FROM DUAL) M
where M.FLT_NR = s.flt_nr(+)
and s.flt_dt BETWEEN SYSDATE - 1 / 3 AND
TRUNC(SYSDATE) - 1 / 3 + 1 + 11 / 24) a
where s.latest_tail_nr = a.latest_tail_nr
and s.dep_arp_cd = a.arv_arp_cd
and s.sch_dep_dt between a.sch_arv_dt and a.sch_arv_dt + 12 / 24) F,
(SELECT DISTINCT S.Flt_Nr, S.LATEST_TAIL_NR, 'Y' AS FCAP
FROM ROSTER_V R, DUTY_PRD_SEG_V D, SCH_DOPS_SOFL S, CREW_V C
WHERE R.SERIES_NUM = D.SERIES_NUM
AND R.SCHED_NM = D.SCHED_NM
AND R.STAFF_NUM = C.STAFF_NUM
AND S.CREW_DEP_DT = D.RESCHEDULED_FLT_DT_TM - 1 / 3
AND TRIM(S.FLT_NR || S.OP_SUFFIX) = D.FLT_NUM
AND S.LATEST_DEP_ARP_CD = D.ACT_PORT_A
AND S.LATEST_ARV_ARP_CD = D.ACT_PORT_B
AND D.RESCHEDULED_FLT_DT_TM BETWEEN SYSDATE AND
TRUNC(SYSDATE) + 1 + 11 / 24
AND D.DELETE_IND = 'N'
AND D.DUTY_CD = 'FLY'
AND D.FD_IND = 'Y'
AND C.NATIONALITY_CD <> 'CN') C
WHERE L.FLT_NR = S.FLT_NR(+)
AND L.FLT_NR = F.flt_nr(+)
AND (L.FLT_NR = C.FLT_NR(+) or F.back_flt_nr = C.FLT_NR)