2011-06-25 40 views
2

我有兩個表格: - T1和T2 T1有一列日期類型:CT1 T2有一列日期類型:CT2 注意T1和T2有其他列太。ora 936 error using while left outer join + syntax

我想通過連接條件左外連接T1和T2: - trunc(CT1,'Mi')= trunc(CT2,'Mi')(+)。請注意,我們還有其他加入條件,但與此處指定的內容無關。

當我嘗試運行此SQL時,收到錯誤或錯誤936:缺少表達式。任何想法這裏有什麼錯誤?

+0

基本上我的問題是可以(+)運算符可以應用於任意表達式...如果是的話,怎麼樣? – ag112

回答

4

我認爲您需要將(+)運算符緊接在適用的列名後面。

trunc(CT1,'Mi')=trunc(CT2 (+),'Mi') 

「的(+)操作者可以僅應用於一列,而不是任意的表達,然而,任意的表達式可以包含標有(+)操作員的一個或多個列。」 (從http://download.oracle.com/docs/cd/B19306_01/server.102/b14200/queries006.htm

無論如何,我會建議使用ANSI語法。它更清晰,更實用,便攜。

+0

+1的操作方法。我同意在函數引用中嵌入(+)運算符的可讀性不高;-) – DCookie

2

嘗試使用ANSI語法:

T1 LEFT OUTER JOIN T2 ON TRUNC(CT1,'Mi')=TRUNC(CT2,'Mi') 

的(+)外部聯接語法有一定的侷限性,這可能是其中之一。當然,如果你改變這個連接,你將不得不改變它們 - 你不能混合這兩個。