如何在Oracle中转换"遗留"左外连接语句?

Dil*_*e-O 3 sql oracle outer-join

我在Oracle数据库中有两个表(A和G),可以根据帐号连接在一起.对此的一个警告是,其中一个表(G)的记录比另一个少约80个.当我一起查询两个表时,我需要获取所有行,以便我们在缺少的80行的列中看到NULL数据.

我目前有一个Oracle语句,它使用以下"遗留"语法执行左外连接查询:

SELECT A.AccountNo,
       A.ParcelNo,
       A.LocalNo,
       A.PrimaryUseCode, 
       A.DefaultTaxDistrict,
       RTRIM(G.Section),
       RTRIM(G.Township),
       RTRIM(g.Range)

  FROM tblAcct A, tblAcctLegalLocation G

 WHERE A.verstart <= '20100917999' AND A.verend > '20100917999' AND A.DefaultTaxDistrict = '2291' 
       AND (SUBSTR(A.AccountNo,1,1) = 'R' or SUBSTR(A.AccountNo,1,1)= 'I') 
       AND SUBSTR(a.ParcelNo,1,1)<> '7' and substr(a.ParcelNo,1,1)<>'8'
       AND A.AcctStatusCode IN ('A', 'T', 'E') 
       AND A.AccountNo = G.AccountNo(+)
       AND G.verstart(+) <= '20100917999' and G.verend(+) > '20100917999'
ORDER BY A.ParcelNo, A.LocalNo
Run Code Online (Sandbox Code Playgroud)

我正在尝试将此查询转换为"标准"LEFT JOIN类型查询,因为我被告知较新版本的Oracle支持此语法.我试过基本的

LEFT OUTER JOIN ON A.AccountNo = G.AccountNo 
Run Code Online (Sandbox Code Playgroud)

但这似乎不起作用.我的查询最多返回80行,少于全部数量.

任何人都可以告诉我我缺少什么或如何正确格式化查询?

OMG*_*ies 7

使用:

  SELECT a.AccountNo,
         a.ParcelNo,
         a.LocalNo,
         a.PrimaryUseCode, 
         a.DefaultTaxDistrict,
         TRIM(g.Section),
         TRIM(g.Township),
         TRIM(g.Range)
     FROM tblAcct A
LEFT JOIN tblAcctLegalLocation g ON g.accountno = a.accountno
                                AND g.verstart <= '20100917999' 
                                AND g.verend > '20100917999'
    WHERE a.verstart <= '20100917999' 
      AND a.verend > '20100917999' 
      AND a.DefaultTaxDistrict = '2291' 
      AND SUBSTR(a.AccountNo,1,1) IN ('R', 'I') 
      AND SUBSTR(a.ParcelNo,1,1) NOT IN ('7', '8')
      AND a.AcctStatusCode IN ('A', 'T', 'E') 
 ORDER BY a.ParcelNo, a.LocalNo
Run Code Online (Sandbox Code Playgroud)

您看到标记为的所有内容(+)必须包含在OUTER连接条件中.在外部JOIN中,在连接之前应用条件.