Na tento dotaz bych spustil kurzor (s programovacím jazykem MySQL SP, Java, Python, .NET):
select Name, Firstname, Lastname, count(1)
from Pruebas
group by Name, Firstname, Lastname
having count(1) > 1
Pak na vrácených řádcích z kurzoru udělejte vše, co potřebujete:zkontrolujte instanci FIN%, zkontrolujte přítomnost PersonalKey a podle toho aktualizujte.
Pro každý řádek na kurzoru můžete otevřít jiný kurzor pomocí:
select *
from Pruebas
where Name = the_Name
and Firstname = the_Firstname
and Lastname = the_Lastname
A nyní budete mít vnitřní kurzor se všemi řádky, které upravíte. Pokud je to ta, kterou potřebujete, uschovejte ji a aktualizujte ji o hodnotu KEY, kterou jste zmínili. V opačném případě jej smažte.
V Oracle můžete dosáhnout toho, co chcete, jedním dotazem, ale nemyslím si, že tímto způsobem dosáhnete stejného výkonu, jako byste s tímto přístupem dosáhli.
Doufám, že to pomůže.