Bom, pra começo de conversa vc não nos diz QUAL é exatamente a regra, mas SE a regra for a comum (ie, há uma combinação de N colunas que deve ser única, TODAS as ocorrências de duplicidade implicam que TODAS AS COLUNAS FORAM REPETIDAS nos registros duplicados), Me parece que vc tá usando uma lógica desnecessariamente complicada, a sintaxe comum pra isso é :
DELETE FROM tabela WHERE rowid NOT IN ( SELECT MAX(ROWID) FROM tabela GROUP BY colA,colB,colC ); Blz ? E é claro, há variações em cima do tema, tipo : digamos que a regra é : vc acha a data de lançamento mais antiga agrupando por uma coluna (conta ?), o que tiver acima disso é duplicado - num caso assim vc usa MIN(coluna) .... Outra opção é Analytics , vide https://blogs.oracle.com/sql/how-to-find-and-delete-duplicate-rows-with-sql para alguns exemplos.... []s Chiappa