[英]SQL / ORACLE Missing keyword
我正在處理一個sql文件,試圖制作一個腳本,該腳本可以帶回顯示的表中的所有數據或表中的所有數據以及3個月的數據。 我不斷收到錯誤消息,指出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
您不能使用CASE
破壞JOIN
。 我已經在您的查詢中看到了這一點,
THEN
INNER JOIN Table acp ON Table_oid = Table_oid
INNER JOIN Table loss ON Table_oid = Table_oid
這是錯誤的,必須在INNER JOIN
關鍵字之前提供表名。
您有兩組看起來相等的聯接。 然后,您有一個希望有條件應用的日期過濾器。 您需要在WHERE子句而不是FROM中應用它。 像這樣
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 ))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.