2

T1 と T2 の 2 つのテーブルがあります。

  • T1 には DATE 列があります: CT1
  • T2 には DATE 列があります: CT2

外部結合 T1 と T2 を結合条件で残したい:

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

この SQL を実行しようとすると、エラー ORA 00936:missing expression が表示されます。

ここで何が間違っているのですか?

4

2 に答える 2

5

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

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

「(+)演算子は列にのみ適用でき、任意の式には適用できません。ただし、任意の式には、(+)演算子でマークされた1つ以上の列を含めることができます。」(http://download.oracle.com/docs/cd/B19306_01/server.102/b14200/queries006.htmから)

いずれにせよ、ANSI構文を使用することをお勧めします。より明確で、より機能的で、ポータブルです。

于 2011-06-25T13:16:25.967 に答える
2

ANSI 構文を使用してみてください。

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

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

于 2011-06-25T05:40:16.450 に答える