3
我在Oracle數據庫中有兩個表(A和G),可以根據帳號連接在一起。有一點需要注意的是,其中一個表(G)比另一個少了大約80個記錄。當我一起查詢這兩個表時,我需要獲取所有行,以便我們可以在列中看到缺少80行的NULL數據。如何在Oracle中轉換「遺留」左外部聯接語句?
我目前有執行左外使用下面的「遺產」語法連接查詢一個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
我想這個查詢轉換成「標準」 LEFT JOIN類型的查詢,因爲我被告知新版本的Oracle支持這種語法。我試過基本的
LEFT OUTER JOIN ON A.AccountNo = G.AccountNo
但這似乎並不奏效。我的查詢返回比全額少80行。
任何人都可以告訴我我缺少什麼或如何正確格式化查詢嗎?
非常好!像魅力一樣工作。你可以擴展一點「...在外部聯接中,標準在聯接之前應用。」我試圖把我的頭圍繞一點,並向我的同事解釋。 – 2010-10-22 21:59:14
@ Dillie-O:在這個例子中,'* verstart'和'verend'標準在* JOIN之前被應用*。它就像一個派生表,在建立JOIN之前過濾掉信息 - 這將產生與在WHERE子句中指定標準不同的結果。 – 2010-10-22 22:01:29
啊,我現在明白了。謝謝! – 2010-10-22 22:02:39