gefundenHallo,
wo muss man denn diese SQL Befehle speichern damit die Liste verändert wird?
gefundenHallo,
wo muss man denn diese SQL Befehle speichern damit die Liste verändert wird?
SELECT
(SELECT cArtNr FROM dbo.tArtikel WHERE kArtikel = tWarenLagerEingang.kArtikel) AS Artikelnummer,
tWarenLager.cName AS Warenlager,
tWarenLagerPlatz.cName AS Lagerplatz,
CONVERT(money, SUM(tWarenLagerEingang.fAnzahlAktuell)) AS Bestand,
CASE
WHEN (SELECT kWarenLagerPlatzTyp FROM dbo.tWarenLagerPlatz WHERE kWarenLagerPlatz = tWarenLagerEingang.kWarenLagerPlatz) = 0 THEN 'Standard'
WHEN (SELECT kWarenLagerPlatzTyp FROM dbo.tWarenLagerPlatz WHERE kWarenLagerPlatz = tWarenLagerEingang.kWarenLagerPlatz) = 1 THEN 'Regalplatz'
WHEN (SELECT kWarenLagerPlatzTyp FROM dbo.tWarenLagerPlatz WHERE kWarenLagerPlatz = tWarenLagerEingang.kWarenLagerPlatz) = 3 THEN 'Wareneingang'
WHEN (SELECT kWarenLagerPlatzTyp FROM dbo.tWarenLagerPlatz WHERE kWarenLagerPlatz = tWarenLagerEingang.kWarenLagerPlatz) = 4 THEN 'Pickwagen'
WHEN (SELECT kWarenLagerPlatzTyp FROM dbo.tWarenLagerPlatz WHERE kWarenLagerPlatz = tWarenLagerEingang.kWarenLagerPlatz) = 5 THEN 'Klaerplatz'
WHEN (SELECT kWarenLagerPlatzTyp FROM dbo.tWarenLagerPlatz WHERE kWarenLagerPlatz = tWarenLagerEingang.kWarenLagerPlatz) = 6 THEN 'Boxenplatz'
WHEN (SELECT kWarenLagerPlatzTyp FROM dbo.tWarenLagerPlatz WHERE kWarenLagerPlatz = tWarenLagerEingang.kWarenLagerPlatz) = 7 THEN 'Palettenplatz'
WHEN (SELECT kWarenLagerPlatzTyp FROM dbo.tWarenLagerPlatz WHERE kWarenLagerPlatz = tWarenLagerEingang.kWarenLagerPlatz) = 8 THEN 'Ladenlokal'
WHEN (SELECT kWarenLagerPlatzTyp FROM dbo.tWarenLagerPlatz WHERE kWarenLagerPlatz = tWarenLagerEingang.kWarenLagerPlatz) = 9 THEN 'Umlagerungsplatz'
WHEN (SELECT kWarenLagerPlatzTyp FROM dbo.tWarenLagerPlatz WHERE kWarenLagerPlatz = tWarenLagerEingang.kWarenLagerPlatz) = 10 THEN 'Programmintern'
WHEN (SELECT kWarenLagerPlatzTyp FROM dbo.tWarenLagerPlatz WHERE kWarenLagerPlatz = tWarenLagerEingang.kWarenLagerPlatz) = 11 THEN 'Retourenplatz'
WHEN (SELECT kWarenLagerPlatzTyp FROM dbo.tWarenLagerPlatz WHERE kWarenLagerPlatz = tWarenLagerEingang.kWarenLagerPlatz) = 12 THEN 'Kartonplatz'
WHEN (SELECT kWarenLagerPlatzTyp FROM dbo.tWarenLagerPlatz WHERE kWarenLagerPlatz = tWarenLagerEingang.kWarenLagerPlatz) IS NULL THEN 'Kein WMS Platz'
WHEN (SELECT kWarenLagerPlatzTyp FROM dbo.tWarenLagerPlatz WHERE kWarenLagerPlatz = tWarenLagerEingang.kWarenLagerPlatz) = '' THEN 'Kein WMS Platz'
END AS 'Lagerplatztyp',
CASE
WHEN (SELECT cName FROM tWarenLagerPlatz WHERE kWarenLagerPlatz = tWarenlagerArtikelOptionen.kWarenLagerPlatz) IS NULL THEN 'Kein Vorgabeplatz'
WHEN (SELECT cName FROM tWarenLagerPlatz WHERE kWarenLagerPlatz = tWarenlagerArtikelOptionen.kWarenLagerPlatz) = '' THEN 'Kein Vorgabeplatz'
ELSE (SELECT cName FROM tWarenLagerPlatz WHERE kWarenLagerPlatz = tWarenlagerArtikelOptionen.kWarenLagerPlatz)
END AS 'Vorgabeplatz'
FROM dbo.tWarenLagerEingang
JOIN dbo.tWarenLagerPlatz ON tWarenLagerEingang.kWarenLagerPlatz = tWarenLagerPlatz.kWarenLagerPlatz
JOIN dbo.tWarenLager ON tWarenLagerPlatz.kWarenLager = tWarenLager.kWarenLager
LEFT JOIN dbo.tWarenlagerArtikelOptionen ON dbo.tWarenlagerArtikelOptionen.kArtikel = tWarenlagereingang.kArtikel
WHERE tWarenLagerEingang.fAnzahlAktuell > 0.0
AND tWarenLagerEingang.kArtikel in (
SELECT kArtikel
FROM tArtikel
WHERE kVaterArtikel IN
(SELECT tArtikel_kArtikel FROM dbo.tBestellpos
WHERE tBestellpos.tBestellung_kBestellung = @Key)
UNION
(SELECT tArtikel_kArtikel FROM dbo.tBestellpos
WHERE tBestellpos.tBestellung_kBestellung = @Key)
)
GROUP BY tWarenLager.cName,
tWarenLagerPlatz.cName,
tWarenLagerEingang.kArtikel,
tWarenlagerArtikelOptionen.kWarenLagerPlatz,
tWarenLagerEingang.kWarenLagerPlatz
ORDER BY
tWarenLagerEingang.kArtikel
Bei mir klappt es weder unter "Verkauf" noch unter "Versand" ( Wawi 1.5.11.2)@voxura und @Graudy testet das SQL hier mal, bei mir scheint es zu funktionieren:
SQL:SELECT (SELECT cArtNr FROM dbo.tArtikel WHERE kArtikel = tWarenLagerEingang.kArtikel) AS Artikelnummer, tWarenLager.cName AS Warenlager, tWarenLagerPlatz.cName AS Lagerplatz, CONVERT(money, SUM(tWarenLagerEingang.fAnzahlAktuell)) AS Bestand, CASE WHEN (SELECT kWarenLagerPlatzTyp FROM dbo.tWarenLagerPlatz WHERE kWarenLagerPlatz = tWarenLagerEingang.kWarenLagerPlatz) = 0 THEN 'Standard' WHEN (SELECT kWarenLagerPlatzTyp FROM dbo.tWarenLagerPlatz WHERE kWarenLagerPlatz = tWarenLagerEingang.kWarenLagerPlatz) = 1 THEN 'Regalplatz' WHEN (SELECT kWarenLagerPlatzTyp FROM dbo.tWarenLagerPlatz WHERE kWarenLagerPlatz = tWarenLagerEingang.kWarenLagerPlatz) = 3 THEN 'Wareneingang' WHEN (SELECT kWarenLagerPlatzTyp FROM dbo.tWarenLagerPlatz WHERE kWarenLagerPlatz = tWarenLagerEingang.kWarenLagerPlatz) = 4 THEN 'Pickwagen' WHEN (SELECT kWarenLagerPlatzTyp FROM dbo.tWarenLagerPlatz WHERE kWarenLagerPlatz = tWarenLagerEingang.kWarenLagerPlatz) = 5 THEN 'Klaerplatz' WHEN (SELECT kWarenLagerPlatzTyp FROM dbo.tWarenLagerPlatz WHERE kWarenLagerPlatz = tWarenLagerEingang.kWarenLagerPlatz) = 6 THEN 'Boxenplatz' WHEN (SELECT kWarenLagerPlatzTyp FROM dbo.tWarenLagerPlatz WHERE kWarenLagerPlatz = tWarenLagerEingang.kWarenLagerPlatz) = 7 THEN 'Palettenplatz' WHEN (SELECT kWarenLagerPlatzTyp FROM dbo.tWarenLagerPlatz WHERE kWarenLagerPlatz = tWarenLagerEingang.kWarenLagerPlatz) = 8 THEN 'Ladenlokal' WHEN (SELECT kWarenLagerPlatzTyp FROM dbo.tWarenLagerPlatz WHERE kWarenLagerPlatz = tWarenLagerEingang.kWarenLagerPlatz) = 9 THEN 'Umlagerungsplatz' WHEN (SELECT kWarenLagerPlatzTyp FROM dbo.tWarenLagerPlatz WHERE kWarenLagerPlatz = tWarenLagerEingang.kWarenLagerPlatz) = 10 THEN 'Programmintern' WHEN (SELECT kWarenLagerPlatzTyp FROM dbo.tWarenLagerPlatz WHERE kWarenLagerPlatz = tWarenLagerEingang.kWarenLagerPlatz) = 11 THEN 'Retourenplatz' WHEN (SELECT kWarenLagerPlatzTyp FROM dbo.tWarenLagerPlatz WHERE kWarenLagerPlatz = tWarenLagerEingang.kWarenLagerPlatz) = 12 THEN 'Kartonplatz' WHEN (SELECT kWarenLagerPlatzTyp FROM dbo.tWarenLagerPlatz WHERE kWarenLagerPlatz = tWarenLagerEingang.kWarenLagerPlatz) IS NULL THEN 'Kein WMS Platz' WHEN (SELECT kWarenLagerPlatzTyp FROM dbo.tWarenLagerPlatz WHERE kWarenLagerPlatz = tWarenLagerEingang.kWarenLagerPlatz) = '' THEN 'Kein WMS Platz' END AS 'Lagerplatztyp', CASE WHEN (SELECT cName FROM tWarenLagerPlatz WHERE kWarenLagerPlatz = tWarenlagerArtikelOptionen.kWarenLagerPlatz) IS NULL THEN 'Kein Vorgabeplatz' WHEN (SELECT cName FROM tWarenLagerPlatz WHERE kWarenLagerPlatz = tWarenlagerArtikelOptionen.kWarenLagerPlatz) = '' THEN 'Kein Vorgabeplatz' ELSE (SELECT cName FROM tWarenLagerPlatz WHERE kWarenLagerPlatz = tWarenlagerArtikelOptionen.kWarenLagerPlatz) END AS 'Vorgabeplatz' FROM dbo.tWarenLagerEingang JOIN dbo.tWarenLagerPlatz ON tWarenLagerEingang.kWarenLagerPlatz = tWarenLagerPlatz.kWarenLagerPlatz JOIN dbo.tWarenLager ON tWarenLagerPlatz.kWarenLager = tWarenLager.kWarenLager LEFT JOIN dbo.tWarenlagerArtikelOptionen ON dbo.tWarenlagerArtikelOptionen.kArtikel = tWarenlagereingang.kArtikel WHERE tWarenLagerEingang.fAnzahlAktuell > 0.0 AND tWarenLagerEingang.kArtikel in ( SELECT kArtikel FROM tArtikel WHERE kVaterArtikel = (SELECT tArtikel_kArtikel FROM dbo.tBestellpos JOIN dbo.tBestellung ON tBestellung.kBestellung = tbestellpos.tBestellung_kBestellung WHERE kBestellung = @key) UNION (SELECT tArtikel_kArtikel FROM dbo.tBestellpos JOIN dbo.tBestellung ON tBestellung.kBestellung = tbestellpos.tBestellung_kBestellung WHERE kBestellung = @Key) ) GROUP BY tWarenLager.cName, tWarenLagerPlatz.cName, tWarenLagerEingang.kArtikel, tWarenlagerArtikelOptionen.kWarenLagerPlatz, tWarenLagerEingang.kWarenLagerPlatz ORDER BY tWarenLager.cName, tWarenLagerPlatz.cName, tWarenLagerEingang.kArtikel, tWarenlagerArtikelOptionen.kWarenLagerPlatz, tWarenLagerEingang.kWarenLagerPlatz
hab ich gemacht und auch noch etwas verfeinert:@LarsW kannst du das bitte in einen neuen Thread schreiben? Das wird hier sonst zu unübersichtlich.
Andere Benutzer könnten deine Anfrage auch interessant finden, würde die aber hier auf der dritten Seite nicht finden![]()
Hallo,Klar mein Freund:
SQL:SELECT tArtikel.cArtNr AS Artikelnummer, tWarenLager.cName AS Warenlager, LTRIM(ISNULL(tWarenLagerPlatzArtikel.cKommentar_1, '') + ' ' + ISNULL(tWarenLagerPlatzArtikel.cKommentar_2, '')) AS Lagerplatz, CONVERT(money, SUM(tWarenLagerEingang.fAnzahlAktuell)) AS Bestand FROM dbo.tWarenLagerEingang JOIN dbo.tArtikel ON tArtikel.kArtikel = tWarenLagerEingang.kArtikel JOIN dbo.tArtikelBeschreibung ON tArtikelBeschreibung.kArtikel = tArtikel.kArtikel AND tArtikelBeschreibung.kSprache = 1 JOIN dbo.tWarenLagerPlatz ON tWarenLagerEingang.kWarenLagerPlatz = tWarenLagerPlatz.kWarenLagerPlatz JOIN dbo.tWarenLagerPlatzArtikel ON tWarenLagerPlatzArtikel.kArtikel = tArtikel.kArtikel AND tWarenLagerPlatzArtikel.kWarenLagerPlatz = tWarenLagerPlatz.kWarenLagerPlatz JOIN dbo.tWarenLager ON tWarenLagerPlatz.kWarenLager = tWarenLager.kWarenLager WHERE tWarenLagerEingang.fAnzahlAktuell > 0.0 AND tWarenLagerEingang.kArtikel in ( SELECT kArtikel FROM tArtikel WHERE kVaterArtikel = @Key UNION SELECT @Key AS kArtikel ) GROUP BY tWarenLager.cName, LTRIM(ISNULL(tWarenLagerPlatzArtikel.cKommentar_1, '') + ' ' + ISNULL(tWarenLagerPlatzArtikel.cKommentar_2, '')), tArtikel.cArtNr ORDER BY tWarenLager.cName, LTRIM(ISNULL(tWarenLagerPlatzArtikel.cKommentar_1, '') + ' ' + ISNULL(tWarenLagerPlatzArtikel.cKommentar_2, '')), tArtikel.cArtNr
SQL:SELECT (SELECT cArtNr FROM dbo.tArtikel WHERE kArtikel = tWarenLagerEingang.kArtikel) AS Artikelnummer, tWarenLager.cName AS Warenlager, LTRIM(ISNULL(tWarenLagerPlatzArtikel.cKommentar_1, '') + ' ' + ISNULL(tWarenLagerPlatzArtikel.cKommentar_2, '')) AS Lagerplatz, CONVERT(money, SUM(tWarenLagerEingang.fAnzahlAktuell)) AS Bestand FROM dbo.tWarenLagerEingang JOIN dbo.tWarenLagerPlatz ON tWarenLagerEingang.kWarenLagerPlatz = tWarenLagerPlatz.kWarenLagerPlatz JOIN dbo.tWarenLagerPlatzArtikel ON tWarenLagerPlatzArtikel.kArtikel = tWarenLagerEingang.kArtikel AND tWarenLagerPlatzArtikel.kWarenLagerPlatz = tWarenLagerPlatz.kWarenLagerPlatz JOIN dbo.tWarenLager ON tWarenLagerPlatz.kWarenLager = tWarenLager.kWarenLager WHERE tWarenLagerEingang.fAnzahlAktuell > 0.0 AND tWarenLagerEingang.kArtikel in ( SELECT kArtikel FROM tArtikel WHERE kVaterArtikel = @Key UNION SELECT @Key AS kArtikel ) GROUP BY tWarenLager.cName, LTRIM(ISNULL(tWarenLagerPlatzArtikel.cKommentar_1, '') + ' ' + ISNULL(tWarenLagerPlatzArtikel.cKommentar_2, '')), tWarenLagerEingang.kArtikel ORDER BY tWarenLager.cName, LTRIM(ISNULL(tWarenLagerPlatzArtikel.cKommentar_1, '') + ' ' + ISNULL(tWarenLagerPlatzArtikel.cKommentar_2, '')), tWarenLagerEingang.kArtikel
EDIT: Geht jetzt mit Varkombis und normalen Artikeln
Edit2: Fehler bei Bestandsberechnung behoben (P.Laumen)
Moin, habe versucht die Abfrage zu erweitern, dass in der Tabelle auch zu dem Lagerplatz das Datum des Wareneingangs ausgegeben wird. Komme leider nicht weiter, da ich mich nur wenig mit SQL auskenne. Kann mir einer helfen? Ich vermute es ist dGeliefertAM in Tabelle tWarenLagerEingang.Hallo,
ich hab den SQL für Vaterartikel angepasst, sodass Ihr nun am Vater den Bestand aller Kindartikel sehen könnt:
SQL:SELECT tArtikel.cArtNr AS Artikelnummer, tWarenLager.cName AS Warenlager, tWarenLagerPlatz.cName AS Lagerplatz, CONVERT(money, SUM(tWarenLagerEingang.fAnzahlAktuell)) AS Bestand FROM dbo.tWarenLagerEingang JOIN dbo.tArtikel ON tArtikel.kArtikel = tWarenLagerEingang.kArtikel JOIN dbo.tArtikelBeschreibung ON tArtikelBeschreibung.kArtikel = tArtikel.kArtikel AND tArtikelBeschreibung.kSprache = 1 JOIN dbo.tWarenLagerPlatz ON tWarenLagerEingang.kWarenLagerPlatz = tWarenLagerPlatz.kWarenLagerPlatz JOIN dbo.tWarenLager ON tWarenLagerPlatz.kWarenLager = tWarenLager.kWarenLager WHERE tWarenLagerEingang.fAnzahlAktuell > 0.0 AND tWarenLagerEingang.kArtikel in ( SELECT kArtikel FROM tArtikel WHERE kVaterArtikel = @Key UNION SELECT @Key AS kArtikel ) GROUP BY tWarenLager.cName, tWarenLagerPlatz.cName, tArtikel.cArtNr ORDER BY tWarenLager.cName, tWarenLagerPlatz.cName, tArtikel.cArtNr
SQL:SELECT (SELECT cArtNr FROM dbo.tArtikel WHERE kArtikel = tWarenLagerEingang.kArtikel) AS Artikelnummer, tWarenLager.cName AS Warenlager, tWarenLagerPlatz.cName AS Lagerplatz, CONVERT(money, SUM(tWarenLagerEingang.fAnzahlAktuell)) AS Bestand FROM dbo.tWarenLagerEingang JOIN dbo.tWarenLagerPlatz ON tWarenLagerEingang.kWarenLagerPlatz = tWarenLagerPlatz.kWarenLagerPlatz JOIN dbo.tWarenLager ON tWarenLagerPlatz.kWarenLager = tWarenLager.kWarenLager WHERE tWarenLagerEingang.fAnzahlAktuell > 0.0 AND tWarenLagerEingang.kArtikel in ( SELECT kArtikel FROM tArtikel WHERE kVaterArtikel = @key UNION SELECT @key AS kArtikel ) GROUP BY tWarenLager.cName, tWarenLagerPlatz.cName, tWarenLagerEingang.kArtikel ORDER BY tWarenLager.cName, tWarenLagerPlatz.cName, tWarenLagerEingang.kArtikel
Viele Grüße
Johannes
Edit: SQL gilt jetzt für Vater und normale Artikel
Edit2: Fehler bei Bestandsberechnung behoben (P.Laumen)
Kann man den Code noch um Lagerplatztyp ergänzen?Moin, habe versucht die Abfrage zu erweitern, dass in der Tabelle auch zu dem Lagerplatz das Datum des Wareneingangs ausgegeben wird. Komme leider nicht weiter, da ich mich nur wenig mit SQL auskenne. Kann mir einer helfen? Ich vermute es ist dGeliefertAM in Tabelle tWarenLagerEingang.
Grüße, Hubertus