Alles viel einfacher:

select ...
case
when anskunde = 'X' then
a.feld1
else
b.feld1
end as feld1
,
case
when anskunde = 'X' then
a.feld2
else
b.feld2
end as feld2
:
:
from myfile
left join filea a on ...
left join fileb b on ...
where ...

Für jedes Feld ist eine Case-Ausdruck erforderlich.
Durch den "left join" ist sichergestellt, dass aus MyFile alle und aus FileA und FileB die vorhandenen Sätze gewählt werden.

Ggf. kann per "coalesce(f.feldx, ' ')" ein NULL-Wert ausgeschlossen werden.

Union ist nicht unbedingt die ideale Lösung.