Je lancerais un curseur (avec le langage de programmation MySQL SP, Java, Python, .NET) sur cette requête :
select Name, Firstname, Lastname, count(1)
from Pruebas
group by Name, Firstname, Lastname
having count(1) > 1
Ensuite, sur les lignes renvoyées par le curseur, faites simplement ce dont vous avez besoin :recherchez l'instance FIN%, vérifiez la présence de PersonalKey et mettez à jour en conséquence.
Pour chaque ligne du curseur, vous pouvez ouvrir un curseur différent avec :
select *
from Pruebas
where Name = the_Name
and Firstname = the_Firstname
and Lastname = the_Lastname
Et maintenant, vous aurez un curseur intérieur avec toutes les lignes que vous modifierez. Si c'est celui dont vous avez besoin, conservez-le et mettez-le à jour avec la valeur KEY que vous avez mentionnée. Sinon, supprimez-le.
Dans Oracle, vous pouvez accomplir ce que vous voulez en une seule requête, mais je ne pense pas que vous obtiendrez ainsi les mêmes performances qu'avec cette approche.
J'espère que ça aide.