使用左外连接+语法时出现936错误

时间:2011-06-25 04:26:11

标签: sql oracle left-join ora-00936

我有两张桌子: - T1和T2 T1有一列日期类型:CT1 T2有一列日期类型:CT2 注意T1和T2也有其他列。

我想使用连接条件离开外连接T1和T2: - trunc(CT1,'Mi')= trunc(CT2,'Mi')(+)。请注意,我们还有其他连接条件,但在此处指定无关紧要。

当我尝试运行此SQL时,我收到错误ora 936:缺少表达式。知道这里有什么问题吗?

2 个答案:

答案 0 :(得分:4)

我认为您需要将(+)运算符放在它适用的列名后面。

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

“(+)运算符只能应用于列,而不能应用于任意表达式。但是,任意表达式可以包含一个或多个用(+)运算符标记的列。” (来自http://download.oracle.com/docs/cd/B19306_01/server.102/b14200/queries006.htm

无论如何,我建议使用ANSI语法。它更清晰,更实用,更便携。

答案 1 :(得分:2)

尝试使用ANSI语法:

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

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