即使违反了 ELF 表的 JOIN 条件,我也希望显示 ROPT 表中的所有记录。
SELECT 1
FROM conf_raggr_opztar ropt,
tar_opzioni_tariffarie opt,
conf_raggruppamenti_forn rgf,
conf_forniture_rel_ragg forg,
conf_forniture forn,
conf_elementi_fatturabili elf,
tar_voci_fatturabili vof,
base_fasce_orarie fas
WHERE ropt.opt_opzione_tariffaria_id = opt.opt_opzione_tariffaria_id
AND rgf.rgf_raggruppamento_forn_id = ropt.rgf_raggruppamento_forn_id
AND forg.rgf_raggruppamento_forn_id = rgf.rgf_raggruppamento_forn_id
AND forg.forn_fornitura_id = forn.forn_fornitura_id
AND forn.forn_fornitura_id = 'QJlXmOFZPF3eAlAG'
AND elf.ROPT_RAGGR_OPZTAR_ID(+) = ropt.ropt_raggr_opztar_id
AND elf.COID_CONTRATTUARIO_ID(+) = ropt.COID_CONTRATTUARIO_ID
AND elf.ROPT_DATA_INI(+) = ropt.ROPT_DATA_INI
AND elf.edw_partition = forn.EDW_PARTITION
AND elf.elf_flag_ann(+) = 'N'
And elf.ELF_DATA_VER_FIN = to_date('31/12/9999','DD/MM/YYYY')
AND elf.VOF_VOCE_FATTURABILE_ID = vof.VOF_VOCE_FATTURABILE_ID
AND fas.FAS_FASCIA_ORARIA_ID = elf.FAS_FASCIA_ORARIA_ID
ORDER BY ELF_VERSIONE desc;
* ANSI JOIN VERSION (它就像第一个)
SELECT 1
FROM CONF_RAGGR_OPZTAR ropt
INNER JOIN TAR_OPZIONI_TARIFFARIE OPT
ON (ropt.OPT_OPZIONE_TARIFFARIA_ID = opt.OPT_OPZIONE_TARIFFARIA_ID)
INNER JOIN CONF_RAGGRUPPAMENTI_FORN rgf
ON (rgf.RGF_RAGGRUPPAMENTO_FORN_ID = ropt.RGF_RAGGRUPPAMENTO_FORN_ID)
INNER JOIN CONF_FORNITURE_REL_RAGG forg
ON (forg.RGF_RAGGRUPPAMENTO_FORN_ID = rgf.RGF_RAGGRUPPAMENTO_FORN_ID)
INNER JOIN CONF_FORNITURE forn
ON (forg.FORN_FORNITURA_ID = forn.FORN_FORNITURA_ID)
LEFT OUTER JOIN CONF_ELEMENTI_FATTURABILI elf
ON (elf.ROPT_RAGGR_OPZTAR_ID = ropt.ROPT_RAGGR_OPZTAR_ID AND
elf.COID_CONTRATTUARIO_ID = ropt.COID_CONTRATTUARIO_ID AND
elf.ROPT_DATA_INI = ropt.ROPT_DATA_INI AND
elf.EDW_PARTITION = forn.EDW_PARTITION)
-- LEFT OUTER JOIN TAR_VOCI_FATTURABILI vof
-- ON (elf.VOF_VOCE_FATTURABILE_ID = vof.VOF_VOCE_FATTURABILE_ID)
-- LEFT OUTER JOIN BASE_FASCE_ORARIE fas
-- ON (fas.FAS_FASCIA_ORARIA_ID = elf.FAS_FASCIA_ORARIA_ID)
WHERE forn.FORN_FORNITURA_ID = 'QJlXmOFZPF3eAlAG' AND
elf.ELF_FLAG_ANN = 'N' AND
elf.ELF_DATA_VER_FIN = TO_DATE('31/12/9999','DD/MM/YYYY')
ORDER BY ELF_VERSIONE DESC;