Nachtrag: Habe gerade mal den Execution Plan anzeigen lassen, dieser COALESCE um den SELECT scheint ineffektiv. Zumindest auf MS SQL Server. Er führt die Abfrage auf Lager und History scheinbar zweimal aus.
Ein geschachtelter SELECT, um den COALESCE vom Subselect zu trennen, sieht besser aus:
SELECT ArtNr, ArtName, EK, Lager, Abgang, (COALESCE(Lager,0)-COALESCE(Abgang,0))*EK
FROM (SELECT A.ArtNr, ArtName, EK,
(SELECT SUM(Menge) FROM ArtikelLager L WHERE A.ArtNr = L.ArtNr) Lager,
(SELECT SUM(Menge) FROM ArtikelHistory H WHERE A.ArtNr = H.ArtNr) Abgang
FROM Artikel A) X
Rolf