0

表示されているテーブルのすべてのデータ、またはテーブルのすべてのデータと 3 か月前のデータのいずれかを戻すスクリプトを作成しようとして、SQL ファイルに取り組んでいます。というエラーが表示され続けますが、その error 00905 missing keyword理由がわかりません。

構文を調べたところ、すべてが正しいように見えます。エラーが発生したと表示されているポイント (最初の内部結合) にマーカーを配置します。構文を超えているため、見栄えを良くするためにすべてのテーブル名を変更しました。

どんな助けでもありがとう。これはコードの一部にすぎませんが、ここにある必要があると確信しています。

WHEN Table_typ_cde = '1' -- Pulling all data --
  THEN
    INNER JOIN  Table   acp ON Table_oid = Table_oid
    INNER JOIN  Table   loss ON Table_oid = Table_oid
    LEFT OUTER JOIN Table veh ON Table_oid = Table_oid and Table_nbr=1
    INNER JOIN Table   brnch ON Table_OID = Table_oid
    INNER JOIN Table   a ON Table_OID = Table_oid
    INNER JOIN Table   c Table_OID = Table_oid
    INNER JOIN Table   s ON Table_OID = Table_oid
    INNER JOIN Table   r ON Table_OID = Table_oid
    INNER JOIN Table   grp ON Table_oid = Table_oid
    INNER JOIN Table on Table_id = Table_id
    WHERE Table_ID <> 2
 WHEN Table_cde = '2' -- Pulling all data within the last 3 months along with all present data --
 THEN
    INNER JOIN  Table   acp ON Table_oid = Table_oid
    INNER JOIN  Table   loss ON Table_oid = Table_oid
    LEFT OUTER JOIN Table veh ON Table_oid = Table_oid and Table_nbr=1
    INNER JOIN Table   brnch ON Table_OID = Table_oid
    INNER JOIN Table   a ON Table_OID = Table_oid
    INNER JOIN Table   c ON Table_OID = Table_oid
    INNER JOIN Table   s ON Table_OID = Table_oid
    INNER JOIN Table   r ON Table_OID = Table_oid
    INNER JOIN Table   grp ON Table_oid = Table_oid
    INNER JOIN Table on Table_id = Table_id
    WHERE Table_ID <> 2
    AND df.DATE_CREATED BETWEEN ADD_MONTHS(SYSDATE, -6)
    AND sysdate
END                                         
) core
4

2 に答える 2

1

JOINを使用して中断することはできませんCASE。私はあなたの質問のある部分でこれを見ました、

THEN
   INNER JOIN  Table   acp ON Table_oid = Table_oid
   INNER JOIN  Table   loss ON Table_oid = Table_oid

それは間違っていますINNER JOIN。キーワードの前にテーブル名を指定する必要があります。

于 2012-10-05T03:14:06.490 に答える
0

等しいように見える結合の2つのセットがあります。次に、条件付きで適用したい日付フィルターがあります。FROMではなくWHERE句でそれを適用する必要があります。このようなもの

FROM  ... INNER JOIN  Table   acp ON Table_oid = Table_oid
    INNER JOIN  Table   loss ON Table_oid = Table_oid
    LEFT OUTER JOIN Table veh ON Table_oid = Table_oid and Table_nbr=1
    INNER JOIN Table   brnch ON Table_OID = Table_oid
    INNER JOIN Table   a ON Table_OID = Table_oid
    INNER JOIN Table   c ON Table_OID = Table_oid
    INNER JOIN Table   s ON Table_OID = Table_oid
    INNER JOIN Table   r ON Table_OID = Table_oid
    INNER JOIN Table   grp ON Table_oid = Table_oid
    INNER JOIN Table on Table_id = Table_id
WHERE Table_ID <> 2
    AND (Table_cde = '1' 
          or ( Table_cde = '2' 
          and df.DATE_CREATED BETWEEN ADD_MONTHS(SYSDATE, -6) AND sysdate ))
于 2012-10-05T07:38:25.893 に答える