Was Britta geschrieben hat, geht nur dann gut, wenn in beiden Lagern jeweils alle Artikelnummern geführt werden, und keine fehlen, meine ich. In einem Join würde ich besonders mit CASE WHEN ... die betreffenden Felder auswählen ..

Ich denke aber eher an UNION, SUBSELECTS und KORRELATIONEN:


Select A.Firma, A.Lager, A.Artikel, A.Menge from fileA A where A.Menge>0

Union

Select B.Firma, B.Lager, B.Artikel, B.Menge from fileB B where B.Menge>0
and B.Artikel not in
( select X.Artikel from fileA X
where X.Artikel=B.Artikel and X.Menge>0 )

---

Den Ausdruck X.Artikel=B.Artikel in der letzten Zeile nenne ich hierbei „Korrelation“.

Hier wird natürlich das Lager aus FileA ganz stark priorisiert, Du kannst das obere SELECT aber auch mit Korrelation auf das untere formulieren, und beispielsweise abfragen, welcher Bestand jeweils größer ist, um den größeren dann auszuwerten, und den kleineren zu ignorieren … Dann wäre kein Lager priorisiert..

In Deinem Fall könnte ich mir auch vorstellen, daß es vielleicht in jedem Lager Mindestbestände gibt,
verfügbare Bestände, Bestellbestände, per ultimo fortgeschriebene Bestände usw. Evtl. mußt Du die SELECTs so formulieren, daß sie die BestandsMengen oder die BedarfsMengen kumulieren, oder irgendwie berücksichtigen. Du solltest die Anforderung mal ganz genau (umgangssprachlich) formulieren. Man kann dann viel besser sehen, ob das deklarativ (in SQL) ausgedrückt werden kann, oder ob man es prozedural (mit STORED PROCEDURES und USER DEFINED FUNCTIONS) angehen sollte.

PS: das SELECT mit UNION mußt Du evtl. noch um Klammern und Bezeichner erweitern, es sollte aber funktionieren.
Ich kann noch nicht versprechen, daß Du dies als View speichern kannst, oder als MATERIALIZED VIEW ... Die Ausgabe eher.
Wenns überhaupt nicht geht, würde ich eine UserDefinedFunction draus machen, vielleicht etwas modularer als UDTF
mit einem Input-Parameter ARTIKELNR, und einem Datensatz als Result, das läßt sich dann schön leicht wiederverwenden,
d.h. genau so, wie jede andere Funktion im SQL auch. Die Funktion (UDTF) müßte man aber regelrecht programmieren ...