我正在制作2张桌子。一个包含匹配我的过滤条件的657行,另一个包含193个记录。
我使用Oracle" AFAIK"成功加入了他们。语法:
select
ecp.portfolio_acct, ecp.posn_id cost_posn_id, ecp.asset_id
from MID_COST_POSITION ecp, MID_CASH_POSITION cas
where ecp.portfolio_acct = 10183306
and ecp.portfolio_acct = cas.portfolio_acct(+)
and ecp.asset_id = cas.asset_id(+)
;
但是,我似乎无法使用ANSI-SQL(或ISO-sql)复制这些结果:
select
ecp.portfolio_acct, ecp.posn_id cost_posn_id, ecp.asset_id
from MID_COST_POSITION ecp
LEFT OUTER JOIN MID_CASH_POSITION cas
on ecp.portfolio_acct = cas.portfolio_acct
where ecp.asset_id = cas.asset_id
and ecp.portfolio_acct = 10183306
;
我尝试了各种JOIN但没有成功。在第一个例子中,我不得不在外部加入2个单独的字段,我不知道如何使用ANSI-SQL完成。
我感谢任何人都能提供的任何指导。谢谢!
答案 0 :(得分:3)
select
ecp.portfolio_acct, ecp.posn_id cost_posn_id, ecp.asset_id
from MID_COST_POSITION ecp
LEFT OUTER JOIN MID_CASH_POSITION cas
on ecp.portfolio_acct = cas.portfolio_acct
and ecp.asset_id = cas.asset_id
Where ecp.portfolio_acct = 10183306
;
您将此转换为内部联接,其中包含以下条件,因为它现在必须满足结果集中的条件:
ecp.asset_id = cas.asset_id