2017-08-11 30 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