2011-06-25 42 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') 

的(+)外部联接语法有一定的局限性,这可能是其中之一。当然,如果你改变这个连接,你将不得不改变它们 - 你不能混合这两个。