2011-06-25 10 views
2

2つのテーブルがあります: - T1とT2 T1に日付型の列があります。 T2に日付型の列があります。CT2 注T1とT2には他の列がありますあまりにも。ora 936左外部結合+構文を使用中にエラーが発生しました

外部結合T1とT2を結合条件で残したいと思います。 - trunc(CT1、 'Mi')= trunc(CT2、 'Mi')(+)。他の結合条件もありますが、ここで指定するのは無関係です。

このSQLを実行しようとすると、ora 936:missing expressionというエラーが表示されます。どのようなアイデアがここに間違っている?

+0

基本的に私の質問は(+)演算子を任意の式に適用することができます...もしそうなら、どうですか?ハウツーのために+1 – ag112

答えて

4

(+)演算子を適用する列名の直後に置く必要があると思います。

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

「(+)演算子はない任意の式に、列にのみ適用することができる。しかし、任意の式は、(+)演算子の付いた1つ以上の列を含めることができます。」 (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') 

(+)外構文はいくつかの制限があり参加し、これはその一つである可能性があります。もちろん、この結合を変更した場合は、それらをすべて変更する必要があります。その2つを混在させることはできません。

関連する問題