Eigene Übersicht: Artikelmengen je Lager – sauber gruppiert & ohne Doppelzählung

Probleme in der Vorlage:

  • kWarenlager ist numerisch → nicht mit '2'/'3' vergleichen.

  • Join auf Bestände multipliziert Zeilen → zuerst pro Artikel aggregieren, dann joinen.

  • Nicht nach fAnzahl gruppieren, sondern summieren.

Korrektur (robust):

WITH Pos AS (
    SELECT
        Verkauf.tAuftragPosition.kArtikel,
        Verkauf.tAuftragPosition.cArtNr,
        SUM(Verkauf.tAuftragPosition.fAnzahl) AS Menge
    FROM Verkauf.tAuftragPosition
    WHERE Verkauf.tAuftragPosition.kAuftrag = @key
    GROUP BY Verkauf.tAuftragPosition.kArtikel, Verkauf.tAuftragPosition.cArtNr
),
Bestand AS (
    SELECT
        dbo.tlagerbestandProLagerLagerartikel.kArtikel,
        SUM(CASE WHEN dbo.tlagerbestandProLagerLagerartikel.kWarenlager = 2
                 THEN dbo.tlagerbestandProLagerLagerartikel.fBestand ELSE 0 END) AS Hauptlager,
        SUM(CASE WHEN dbo.tlagerbestandProLagerLagerartikel.kWarenlager = 3
                 THEN dbo.tlagerbestandProLagerLagerartikel.fBestand ELSE 0 END) AS Ladenlager
    FROM dbo.tlagerbestandProLagerLagerartikel
    GROUP BY dbo.tlagerbestandProLagerLagerartikel.kArtikel
)
SELECT
    Pos.cArtNr AS Artikelnummer,
    CAST(Pos.Menge AS DECIMAL(10, 2)) AS Menge,
    CAST(ISNULL(Bestand.Hauptlager, 0) AS DECIMAL(10, 2)) AS Hauptlager,
    CAST(ISNULL(Bestand.Ladenlager, 0) AS DECIMAL(10, 2)) AS Ladenlager
FROM Pos
LEFT JOIN Bestand
    ON Bestand.kArtikel = Pos.kArtikel;

Kurz erklärt:

  • Pos: fasst Auftragspositionen pro Artikel zusammen (SUM(fAnzahl)).

  • Bestand: summiert je Artikel die Lagerbestände für Lager 2 und 3.

  • LEFT JOIN: zeigt auch Artikel ohne Bestandszeile.

  • Einheitliche Ausgabe mit DECIMAL(10,2).

Hinweis zur Nutzung von Code-Beispielen

Die auf dieser Website bereitgestellten Code-Beispiele und Skripte dienen ausschließlich zu Demonstrations- und Lernzwecken. Die Nutzung in produktiven Umgebungen erfolgt auf eigene Verantwortung. Wir übernehmen keine Haftung für Schäden oder Datenverluste, die durch unsachgemäße Anwendung entstehen.