我有两张桌子:T1 和 T2
- T1 有一个 DATE 列:CT1
- T2 有一个 DATE 列:CT2
我想用连接条件离开外部连接 T1 和 T2:
trunc(CT1,'Mi')=trunc(CT2,'Mi')(+)
当我尝试运行此 SQL 时,我收到错误 ORA 00936:missing expression。
知道这里有什么问题吗?
我认为您需要将(+)
运算符紧跟在它适用的列名之后。
trunc(CT1,'Mi')=trunc(CT2 (+),'Mi')
“(+) 运算符只能应用于列,不能应用于任意表达式。但是,任意表达式可以包含一个或多个标有 (+) 运算符的列。” (来自http://download.oracle.com/docs/cd/B19306_01/server.102/b14200/queries006.htm)
无论如何,我建议使用 ANSI 语法。它更清晰、更实用、更便携。
尝试使用 ANSI 语法:
T1 LEFT OUTER JOIN T2 ON TRUNC(CT1,'Mi')=TRUNC(CT2,'Mi')
(+) 外连接语法有一些限制,这可能是其中之一。当然,如果您更改此连接,则必须全部更改 - 您不能将两者混合使用。