Si estas utilizando Firebird podri quedar asi...
Código SQL
[-]
Update Or Insert Into TablaDestino
Select *
from TablaFuente
where condiciones;
Otra forma:
Código SQL
[-]
MERGE INTO TablaDestino TD
USING (SELECT * FROM TablaFuente) TF
ON (TD.Campo_De_Union=TF.Campo_De_Union)
WHEN MATCHED THEN
UPDATE SET
Campo2=TF.Campo2
WHEN NOT MATCHED THEN
INSERT (Campo1, Campo2)
VALUES (TF.Campo1, TF.Campo2)
Saludos