Neu Stellplatzübersicht mit FIFO Informationen (Eigene Übersicht / SQL)

MirkoWK

Sehr aktives Mitglied
14. März 2022
835
305
Hallo zusammen,

wir lieben die eigenen Übersichten und scheitern aktuell schon gedanklich an folgendem Wunsch.

Eine SQL-Abfrage, welche uns zum Artikel alle Stellplätze samt Lagermenge zeigt. Der Knackpunkt wäre die Unterteilung der Mengen nach Alter (FIFO).

Zb auf Stellplatz A stehen 8 Artikel. 2 davon sind mit ihrer Erstbuchung vom 1.1.23 und die übrigen 6 vom 1.3.23. > also sollten hier 2 Zeilen herauskommen mit 2x Stellplatz A und Mengen 2 und 6 samt "Alter".
Soweit wir wissen, trackt die Wawi im Hintergrund die Daten mit, wir bekommen es nur nicht so aggregiert.

Hat jemand eine Idee dazu?

Hier unsere aktuell Stellplatzübersicht (dabei werden Einzelartikel als auch Stücklisten berücksichtigt):
SQL:
SELECT
    a.cArtNr AS 'Artikel',
    l.cName AS 'Warenlager',
    lp.cName AS 'Lagerplatz',
    FORMAT(SUM(we.fAnzahlAktuell),'0') AS 'Bestand'
FROM
    tWarenLagerEingang we
    LEFT JOIN tWarenLagerPlatz lp ON we.kWarenLagerPlatz = lp.kWarenLagerPlatz
    LEFT JOIN tWarenLager l ON lp.kWarenLager = l.kWarenLager
    LEFT JOIN tArtikel a ON a.kArtikel = we.kArtikel
WHERE
    we.fAnzahlAktuell > 0.0 AND
    we.kArtikel = @KEY
GROUP BY
    a.cArtNr,
    l.cName,
    lp.cName
UNION
SELECT
    a.cArtNr AS 'Artikel',
    l.cName AS 'Warenlager',
    lp.cName AS 'Lagerplatz',
    FORMAT(SUM(we.fAnzahlAktuell),'0') AS 'Bestand'
FROM
    tStueckliste sl
    LEFT JOIN tArtikel a ON a.kArtikel = sl.kArtikel
    LEFT JOIN tWarenLagerEingang we ON sl.kArtikel = we.kArtikel
    LEFT JOIN tWarenLagerPlatz lp ON we.kWarenLagerPlatz = lp.kWarenLagerPlatz
    LEFT JOIN tWarenLager l ON lp.kWarenLager = l.kWarenLager
WHERE
    we.fAnzahlAktuell > 0.0
    AND sl.kVaterArtikel = @KEY
GROUP BY
    a.cArtNr,
    l.cName,
    lp.cName
ORDER BY
    a.cArtNr,
    lp.cName

Ich freue mich auf euer Feedback
Viele Grüße
Mirko
 

SebastianB

Moderator
Mitarbeiter
6. November 2012
2.084
339
Nimm zum Basteln den UNION-Teil raus. Dann änderst Du die Gruppierung - wenn ich das richtig verstanden habe, dann die ganz raus:
{code}
SELECT
a.cArtNr AS 'Artikel',
l.cName AS 'Warenlager',
lp.cName AS 'Lagerplatz',
we.fAnzahlAktuell AS 'Bestand',
we.dGebucht AS 'Gebucht'
FROM
tWarenLagerEingang we
LEFT JOIN tWarenLagerPlatz lp ON we.kWarenLagerPlatz = lp.kWarenLagerPlatz
LEFT JOIN tWarenLager l ON lp.kWarenLager = l.kWarenLager
LEFT JOIN tArtikel a ON a.kArtikel = we.kArtikel
WHERE
we.fAnzahlAktuell > 0.0 AND
we.kArtikel = @KEY
{code}

Damit dann weiter experimentieren, bis das gewünschte Ergebnis da ist. Bei Stücklisten muss man sich überlegen, was man angezeigt haben will.
 
  • Gefällt mir
Reaktionen: MirkoWK

MirkoWK

Sehr aktives Mitglied
14. März 2022
835
305
Guten Morgen Sebastian,

vielen Dank für die schnelle Hilfe. Die Lösung lag also sehr nah 😉.
Das dGebucht gab es nicht, aber ein dGeliefertAM, was korrekt aussieht.

Klickt man eine Stückliste an, so zeigt es einfach die Daten zu allen Komponenten an.

Es ist jetzt final so hier umgesetzt:

SQL:
SELECT
    a.cArtNr AS 'Artikel',
    l.cName AS 'Warenlager',
    lp.cName AS 'Lagerplatz',
    FORMAT(SUM(we.fAnzahlAktuell),'0') AS 'Bestand',
    FORMAT(we.dGeliefertAM,'dd.MM.yyyy HH:mm:ss') AS 'Datum Wareneingang'
FROM
    tWarenLagerEingang we
    LEFT JOIN tWarenLagerPlatz lp ON we.kWarenLagerPlatz = lp.kWarenLagerPlatz
    LEFT JOIN tWarenLager l ON lp.kWarenLager = l.kWarenLager
    LEFT JOIN tArtikel a ON a.kArtikel = we.kArtikel
WHERE
    we.fAnzahlAktuell > 0.0 AND
    we.kArtikel = @KEY
GROUP BY
    a.cArtNr,
    l.cName,
    lp.cName,
    we.dGeliefertAM
UNION
SELECT
    a.cArtNr AS 'Artikel',
    l.cName AS 'Warenlager',
    lp.cName AS 'Lagerplatz',
    FORMAT(SUM(we.fAnzahlAktuell),'0') AS 'Bestand',
    FORMAT(we.dGeliefertAM,'dd.MM.yyyy HH:mm:ss') AS 'Datum Wareneingang'
FROM
    tStueckliste sl
    LEFT JOIN tArtikel a ON a.kArtikel = sl.kArtikel
    LEFT JOIN tWarenLagerEingang we ON sl.kArtikel = we.kArtikel
    LEFT JOIN tWarenLagerPlatz lp ON we.kWarenLagerPlatz = lp.kWarenLagerPlatz
    LEFT JOIN tWarenLager l ON lp.kWarenLager = l.kWarenLager
WHERE
    we.fAnzahlAktuell > 0.0
    AND sl.kVaterArtikel = @KEY
GROUP BY
    a.cArtNr,
    l.cName,
    lp.cName,
    we.dGeliefertAM
ORDER BY
    a.cArtNr,
    lp.cName

Viele Grüße
Mirko
 

Ähnliche Themen