【发布时间】:2020-06-29 14:50:07
【问题描述】:
我有一个巨大的 sql,它是用旧式连接代码编写的,我正在尝试将其更改为 ansi 连接,我没有粘贴选择查询,只是粘贴连接条件以方便使用 ansi join 不会产生任何数据,但旧的会产生。
这是我的旧式加入
select *****
from CHECKING_EXT_CASH_FLW_REP CS, OTP_ALL_REP TP_REP ,
(select M_LABEL,min(M_ALT_ID) as M_ALT_ID from ING_ALIAS_REP where M_ALT_SYS=@CtpAlternateSystem:C group by M_LABEL) CA,
(select M_LABEL,min(M_ALT_ID) as M_ALT_ID from ING_ALIAS_REP where M_ALT_SYS=@PtfAlternateSystem:C group by M_LABEL) PA
where TP_REP.M_REF_DATA=CS.M_REF_DATA
and TP_REP.M_TP_PFOLIO=CS.M_TP_PFOLIO
and TP_REP.M_NB=CS.M_NB
and CA.M_LABEL(+)=TP_REP.M_TP_CNTRPID
and PA.M_LABEL(+)=TP_REP.M_TP_PFOLIO
and CS.M_F_OBSCOM ='N'
我尝试将其转换为 ansi join,下面是代码
select **********
from OTP_ALL_REP TP_REP
JOIN CHECKING_EXT_CASH_FLW_REP CS ON (TP_REP.M_REF_DATA=CS.M_REF_DATA and TP_REP.M_TP_PFOLIO=CS.M_TP_PFOLIO and TP_REP.M_NB=CS.M_NB )
RIGHT OUTER JOIN (select M_LABEL,min(M_ALT_ID) as M_ALT_ID from ING_ALIAS_REP where M_ALT_SYS=@CtpAlternateSystem:C group by M_LABEL) CA ON( CA.M_LABEL=TP_REP.M_TP_CNTRPID )
RIGHT OUTER JOIN (select M_LABEL,min(M_ALT_ID) as M_ALT_ID from ING_ALIAS_REP where M_ALT_SYS=@PtfAlternateSystem:C group by M_LABEL) PA ON (PA.M_LABEL=TP_REP.M_TP_PFOLIO)
旧代码有效,但后者无效,是否有任何我遗漏的内容,或者我的转换有问题。
【问题讨论】:
-
"最新的 ansi 加入"?就像在 ANSI/ISO SQL: 1999 中一样? :-)
-
现在改了:)
标签: sql join oracle11g left-join outer-join