2017-08-11 52 views
1

我得到一個錯誤獲取ORA-00928:缺少SELECT關鍵字錯誤

ORA-00928:在運行該查詢缺少SELECT關鍵字

WITH Dups AS 
(
    SELECT 
     ID, AMOUNT, BATCH_ID, PROCESS_DATE, ITEM_NUMBER, ERROR_TYPE, INSERTED_DATE, 
     ROW_NUMBER() OVER(PARTITION BY ID, ERROR_TYPE ORDER BY ID) AS rn 
    FROM 
     ERROR_TABLE 
    WHERE 
     inserted_date >= TRIM(TO_DATE('01-AUG-17', 'DD-MON-YY')) 
     AND inserted_date <= TRIM(TO_DATE('11-AUG-17', 'DD-MON-YY')) 
) 
DELETE FROM Dups 
WHERE rn > 1 
+1

你不能從一個CTE刪除行,所以他們必須跟一個選擇。也許你想把這個包裝在一個子查詢和你的RN> 1條件 – markg

回答

3

這是而不是如何刪除Oracle中的重複項。啓發,但不適用於該數據庫。事情是這樣的:

delete error_table et 
    where et.inserted_date >= date '2017-08-01' and 
      et.inserted_date <= date '2017-08-11' and 
      rowid > (select min(et2.rowid) 
        from error_table et2 
        where et2.inserted_date >= date '2017-08-01' and 
         et2.inserted_date <= date '2017-08-11' and 
         et2.id = et.id and 
         et2.error_type = et.error_type 
       ); 
+0

的where子句中。謝謝Gordon。 – Chris

+2

如果這解決了您的問題,@Chris,請將其標記爲已接受的答案。 – SandPiper