Hi!
Ich versuche gerade in unserer Datenbank einen Bestandsabgleich von Artikeln durchzuführen.
Dies habe ich per Merge versucht durchzuführen. Leider gibt es einige Besonderheiten die beachtet werden müssen.
Meine ersten Versuche endeten leider im Desaster.
Besonderheiten:
1. Es gibt Artikel mit Bestand. 2. Es gibt Variantenartikel mit entsprechender AusprägungsID und Bestand. 3. Es gibt Stücklistenartikel welche über einen Mutterartikel mit dem Bestand versorgt werden.
Die Lagerbestände für normale Einzelartikel und Variantenartikel stehen in einer Tabelle. Die Werte für Stücklistenartikel stehen in einer anderen Tabelle.
Mein Vorgehen für Stücklistenartikel war nun folgendes:
MERGE [TabelleMitArtikelnZumUpdaten] as EI
USING(SELECT * FROM [QuellTabelle]) as LBS
ON EI.Artikelnummer = LBS.Artikelnummer
AND EI.TecDocInfo = LBS.Shop
AND EI.AuspraegungID = LBS.AuspraegungID
WHEN MATCHED THEN
UPDATE SET
EI.Quantity = LBS.StcklBestand;
Dies sind von mir umfunktionierte Felder welche ich zur Identifizierung genutzt habe. Ich habe entsprechend in beiden Feldern eine 1 eingetragen um diese Matchen zu können EI.TecDocInfo = LBS.Shop
Ein Fehler den ich drin habe, ist meiner Meinung nach die AusprägungsId, da ein Stücklistenartikel keine Variante ist und keine entsprechende ID hat.
Mein Befehl hatte soweit auch funktioniert aber leider wurden immer alle Artikel entsprechend mit einen Bestand versorgt. Dies führte aufgrund der entsprechenden fehlenden Einträge in der einen oder anderen Tabelle, dann aber leider zu einem Bestand von 0.
Gibt es eine Möglichkeit, die Merge Funktion vor dem Ausführen irgendwie als Select zur Sicherheit darzustellen?
Ich versuche gerade in unserer Datenbank einen Bestandsabgleich von Artikeln durchzuführen.
Dies habe ich per Merge versucht durchzuführen. Leider gibt es einige Besonderheiten die beachtet werden müssen.
Meine ersten Versuche endeten leider im Desaster.
Besonderheiten:
1. Es gibt Artikel mit Bestand. 2. Es gibt Variantenartikel mit entsprechender AusprägungsID und Bestand. 3. Es gibt Stücklistenartikel welche über einen Mutterartikel mit dem Bestand versorgt werden.
Die Lagerbestände für normale Einzelartikel und Variantenartikel stehen in einer Tabelle. Die Werte für Stücklistenartikel stehen in einer anderen Tabelle.
Mein Vorgehen für Stücklistenartikel war nun folgendes:
MERGE [TabelleMitArtikelnZumUpdaten] as EI
USING(SELECT * FROM [QuellTabelle]) as LBS
ON EI.Artikelnummer = LBS.Artikelnummer
AND EI.TecDocInfo = LBS.Shop
AND EI.AuspraegungID = LBS.AuspraegungID
WHEN MATCHED THEN
UPDATE SET
EI.Quantity = LBS.StcklBestand;
Dies sind von mir umfunktionierte Felder welche ich zur Identifizierung genutzt habe. Ich habe entsprechend in beiden Feldern eine 1 eingetragen um diese Matchen zu können EI.TecDocInfo = LBS.Shop
Ein Fehler den ich drin habe, ist meiner Meinung nach die AusprägungsId, da ein Stücklistenartikel keine Variante ist und keine entsprechende ID hat.
Mein Befehl hatte soweit auch funktioniert aber leider wurden immer alle Artikel entsprechend mit einen Bestand versorgt. Dies führte aufgrund der entsprechenden fehlenden Einträge in der einen oder anderen Tabelle, dann aber leider zu einem Bestand von 0.
Gibt es eine Möglichkeit, die Merge Funktion vor dem Ausführen irgendwie als Select zur Sicherheit darzustellen?