T1 と T2 の 2 つのテーブルがあります。
- 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')
「(+)演算子は列にのみ適用でき、任意の式には適用できません。ただし、任意の式には、(+)演算子でマークされた1つ以上の列を含めることができます。」(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')
(+) 外部結合構文にはいくつかの制限があり、これはその 1 つかもしれません。もちろん、この結合を変更する場合は、それらすべてを変更する必要があります。2 つを混在させることはできません。