【发布时间】:2017-11-15 13:53:30
【问题描述】:
我正在处理 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 来完成。
感谢任何人提供的任何指导。谢谢!
【问题讨论】:
-
stackoverflow.com/questions/4001045/… 的链接给了我所需的答案。 “ON”、“AND”和“WHERE”子句的顺序肯定会产生影响。选择 ecp.portfolio_acct、ecp.posn_id cost_posn_id、ecp.asset_id from MID_COST_POSITION ecp LEFT JOIN MID_CASH_POSITION cas on cas.asset_id = ecp.asset_id 和 ecp.portfolio_acct = cas.portfolio_acct 其中ecp.portfolio_acct = 10183306 按1、3 排序;跨度>