Super, danke Fuerchau und BenderD, das hat mir beides gut weitergeholfen. Die Abfrage funktioniert nun.

Aber wie Fuerchau schon beschrieben hat, wird 0 geliefert, wenn nichts gefunden wird (Auch mit 'fetch first 1 rows only'). Wie kann ich es vermeiden, dass das Feld teat05 überschrieben wird, wenn das Select Ergebnis 0 liefert?

Zum Verständnis meiner Abfrage: Ich möchte, abhängig von der Artikelnummer, die Preise in son01pf der Firma 01 in die tst1pf der Firma 10 schreiben. Das sind ca. 700 Preise. Aber das SQL updated das Feld teat05 in allen 8000 Zeilen der Firma 10 in der tst01pf.

update tst01pf t
set t.teat05= coalesce((select s.soeipr
from son01pf s
where t.tetenr = s.soid4
and s.sofa =01
and s.sodtbi >= 161231
and s.soeipr <> 0
and s.soeipr is not null
and s.soid1=30600
and t.tefa = 10
and s.sosts = 0
fetch first 1 rows only), 0)
where t.tefa = 10

Gruß

Progras