Gelöst Eigene Übersicht Versand>Aufträge Artikelmenge über alle Einträge

RobinW

Aktives Mitglied
15. Oktober 2018
7
1
Hallo zusammen,

ich habe leider nicht genügend Kenntnisse über SQL, und benötige bei folgender Abfrage Hilfe..

Ich möchte eine eigene Übersicht im Bereich Versand>Aufträge erstellen, die entweder über alle vorhandenen Einträge geht oder alle Markierten, beides wäre ok. Vorzugsweise alle Markierten.
Als Ergebnis möchte ich folgende Übersicht:
Artikelnummer , Artikelname , Menge , Verfügbar(Standardlager) , Lagerbestand(Standardlager) , Lieferstatus , Erscheint am(Datum)

Hierbei soll aus den markierten Aufträgen unter Artikelnummer nur der Basisartikel und keine Stückliste ausgewertet werden und unter Menge die Gesamtsumme pro Artikel in den markierten Aufträgen dargestellt werden.
Alle anderen Spalten sollen Aus dem Artikelstamm gezogen werden.

Über jede Hilfe bin ich sehr dankbar!
Grüße Robin
 

DasPatte

Aktives Mitglied
16. Mai 2018
44
13
Mhm, ich habs dir mal so aufgeschrieben:
  • Lieferstatus
    • OK -> Lieferbar
    • WARTEND -> Nicht lieferbar, aber im Zulauf
    • FEHLT -> Nicht lieferbar, nicht im Zulauf
  • Erscheint am (Datum)
    • Bezieht sich ja nicht auf das Verfügbarkeitsdatum, wann der Artikel wieder auf Lager ist, sondern wann der Artikel überhaupt verfügbar ist. Deswegen habe ich dir beides angezeigt (Unzutreffendes streichen)

SQL:
SELECT v.cArtNr AS ArtNr,[cString] AS ArtName,[fAnzahl] AS Anzahl,[fVerfuegbar] AS Verfügbar,[fLagerbestand] AS Lagerbestand,
CASE
WHEN (nLieferbarStatusEigen = 10) THEN 'OK'
WHEN (nLieferbarStatusEigen = 20) THEN 'WARTEND'
WHEN (nLieferbarStatusEigen > 20) THEN 'FEHLT'
END AS Lieferstatus, dErscheinungsdatum AS ErscheintAm, dZulaufVerfuegbarAm AS ZulaufAm
FROM Verkauf.lvAuftragsposition v JOIN tArtikel t ON t.kArtikel = v.tArtikel_kArtikel
WHERE kBestellung = @Key

Hoffe, das hilft dir weiter.

Gruß Patrick
 
  • Gefällt mir
Reaktionen: lichtblicker:-)

RobinW

Aktives Mitglied
15. Oktober 2018
7
1
Hallo Patrick,

vielen Dank für die schnelle Rückmeldung und deine Abfrage.

Das Ergebnis zeigt auf jeden Fall schon mal die Spalten die ich brauche.
Mit Lieferstatus meinte ich das Feld aus dem Artikelstamm, nicht ob die Ware verfügbar oder im Zulauf ist. Screenshot dazu im Anhang.
Da auch Stücklistenartikel ausgewertet werden, wäre eine weitere Spalte mit dem Inhalt "IstStückliste" ja oder nein hilfreich oder dass keine Stücklisten berücksichtigt werden.

Und was mir bei dem Ergebnis wichtig ist, ist dass mehrere markierte Aufträge ausgewertet werden können.
Dazu auch 2 Screenshots, wenn ich einen Auftrag markiere, erhalte ich eine Abfrage. Wenn ich mehr als einen Auftrag markiere erhalte ich keine Abfrage mehr.

Lieferstatus.png2_Auftrag.png1_Auftrag.png

Vielen Dank für weitere Unterstützung!

Grüße Robin
 
  • Gefällt mir
Reaktionen: lichtblicker:-)

Karobube

Sehr aktives Mitglied
23. September 2020
153
81
Remote via AnyDesk
Firma
contact@karobube.com
Hallo @Robin1996 ,

eine Eigene Übersicht zu mehreren markierten Einträgen war bisher nicht möglich, ist jetzt aber neu ab der 1.7 möglich.
Versuch's mal hiermit, habe ungetestet die Antwort von @DasPatte angepasst, teste es einfach mal, insbesondere den Lieferstatus:

SQL:
SELECT v.cArtNr AS ArtNr,tArtikelBeschreibung.cName AS ArtName,[fAnzahl] AS Anzahl,[fVerfuegbar] AS Verfügbar,[fLagerbestand] AS Lagerbestand,
tLieferstatus.cName AS Lieferstatus, dErscheinungsdatum AS ErscheintAm, dZulaufVerfuegbarAm AS ZulaufAm, CASE WHEN t.kStueckliste = 0 THEN 'NEIN' ELSE 'JA' END AS IstStueckliste
FROM Verkauf.lvAuftragsposition v
JOIN tArtikel t ON t.kArtikel = v.kArtikel
JOIN tSpracheUsed ON nStandard = 1
JOIN tArtikelBeschreibung ON t.kArtikel = tArtikelBeschreibung.kArtikel
    AND tSpracheUsed.kSprache = tArtikelBeschreibung.kSprache
    AND tArtikelBeschreibung.kPlattform = 1
LEFT JOIN tLieferstatus ON tLieferstatus.kLieferStatus = t.kLieferStatus AND tLieferStatus.kSprache = tSpracheUsed.kSprache
WHERE kAuftrag IN (@Keys)

Wenn's geholfen hat, steck gerne dem nächsten Bedürftigen einen 5er zu, Gott vergelt's <3

VG KB
 

Intronic

Aktives Mitglied
28. Februar 2012
33
4
Hi zusammen,

vielen Dank für die Beiträge, die Abfrage von Karobube löst zu 95% auch mein Problem.
Allerdings habe ich noch die Herausforderung, dass ich mit Variationen und Stücklisten arbeite. Da ich mit SQL sehr unerfahren bin, wäre ich für Hilfe sehr dankbar 😇
Hier mal ein vereinfachtes Beispiel einer Ausgabe:

A65989 ist jeweils in der Stückliste einer der darüber angezeigten Variationsartikel

1.png

Ich benötige ein Liste der nicht-Stücklistenartikel, summiert pro Artikelnummer. Die Ausgabe in meinem Beispiel sollte also "ArtNr 65989, Anzahl 3" sein.

Die Stücklistenartikel herauszufiltern habe ich bereits erreicht, durch Ergänzung von "AND t.kStueckliste = 0" an den WHERE Befehl.

Wie schaffe ich es nun die Anzahl je Artikelnummer zu summieren?

Für jemanden der SQL kann ist das bestimmt eine Kleinigkeit 😅

Vielen Dank vorab!

Viele Grüße
Christoph
 

Karobube

Sehr aktives Mitglied
23. September 2020
153
81
Remote via AnyDesk
Firma
contact@karobube.com
Ich benötige ein Liste der nicht-Stücklistenartikel, summiert pro Artikelnummer. Die Ausgabe in meinem Beispiel sollte also "ArtNr 65989, Anzahl 3" sein.

Vielen Dank vorab!
SQL:
SELECT v.cArtNr AS ArtNr,tArtikelBeschreibung.cName AS ArtName,SUM([fAnzahl]) AS Anzahl,[fVerfuegbar] AS Verfügbar,[fLagerbestand] AS Lagerbestand,
tLieferstatus.cName AS Lieferstatus, dErscheinungsdatum AS ErscheintAm, dZulaufVerfuegbarAm AS ZulaufAm, CASE WHEN t.kStueckliste = 0 THEN 'NEIN' ELSE 'JA' END AS IstStueckliste
FROM Verkauf.lvAuftragsposition v
JOIN tArtikel t ON t.kArtikel = v.kArtikel
JOIN tSpracheUsed ON nStandard = 1
JOIN tArtikelBeschreibung ON t.kArtikel = tArtikelBeschreibung.kArtikel
    AND tSpracheUsed.kSprache = tArtikelBeschreibung.kSprache
    AND tArtikelBeschreibung.kPlattform = 1
LEFT JOIN tLieferstatus ON tLieferstatus.kLieferStatus = t.kLieferStatus AND tLieferStatus.kSprache = tSpracheUsed.kSprache
WHERE kAuftrag IN (@Keys) AND t.kStueckliste = 0
GROUP BY t.kArtikel, v.cArtNr, tArtikelBeschreibung.cName, [fVerfuegbar], [fLagerbestand], tLieferstatus.cName,dErscheinungsdatum,dZulaufVerfuegbarAm, t.kStueckliste
 

HMside

Aktives Mitglied
14. April 2019
51
14
SQL:
SELECT v.cArtNr AS ArtNr,tArtikelBeschreibung.cName AS ArtName,SUM([fAnzahl]) AS Anzahl,[fVerfuegbar] AS Verfügbar,[fLagerbestand] AS Lagerbestand,
tLieferstatus.cName AS Lieferstatus, dErscheinungsdatum AS ErscheintAm, dZulaufVerfuegbarAm AS ZulaufAm, CASE WHEN t.kStueckliste = 0 THEN 'NEIN' ELSE 'JA' END AS IstStueckliste
FROM Verkauf.lvAuftragsposition v
JOIN tArtikel t ON t.kArtikel = v.kArtikel
JOIN tSpracheUsed ON nStandard = 1
JOIN tArtikelBeschreibung ON t.kArtikel = tArtikelBeschreibung.kArtikel
    AND tSpracheUsed.kSprache = tArtikelBeschreibung.kSprache
    AND tArtikelBeschreibung.kPlattform = 1
LEFT JOIN tLieferstatus ON tLieferstatus.kLieferStatus = t.kLieferStatus AND tLieferStatus.kSprache = tSpracheUsed.kSprache
WHERE kAuftrag IN (@Keys) AND t.kStueckliste = 0
GROUP BY t.kArtikel, v.cArtNr, tArtikelBeschreibung.cName, [fVerfuegbar], [fLagerbestand], tLieferstatus.cName,dErscheinungsdatum,dZulaufVerfuegbarAm, t.kStueckliste
Hallo Karobube,

danke für das Script. Ich würde gerne nicht die einzelnen Positionen auflisten/summieren, sondern nur die Artikel, ohne dass die Stücklisten-Positionen aufgeführt und gezählt werden. Hättest Du dazu ggf. auch ein passendes Script parat?
 

HMside

Aktives Mitglied
14. April 2019
51
14
Hallo Karobube,

danke für das Script. Ich würde gerne nicht die einzelnen Positionen auflisten/summieren, sondern nur die Artikel, ohne dass die Stücklisten-Positionen aufgeführt und gezählt werden. Hättest Du dazu ggf. auch ein passendes Script parat?

Habe mir zwischenzeitlich selber ein Script erstellt. Da ich kein SQL Crack bin, kann es natürlich sein, dass man es noch einfach oder besser hinbekommt. Optimierungsvorschläge sind daher gerne willkommen.

Code:
SELECT cArtNr, cName, FORMAT(SUM(Anzahl), 'N2') AS Anzahl
FROM (
    SELECT
        cArtNr,
        cName,
        kStuecklistenVater,
  kAuftragPosition,
  SUM([fAnzahl]) AS Anzahl,
        ROW_NUMBER() OVER (PARTITION BY kStuecklistenVater ORDER BY kAuftragPosition) AS RowNum
    FROM Verkauf.lvAuftragsposition
    WHERE kAuftrag IN (@Keys) AND cArtNr != ''
    GROUP BY cArtNr, cName, kStuecklistenVater, kAuftragPosition
) AS RankedResults
WHERE RowNum = 1 OR kStuecklistenVater IS NULL
GROUP BY cArtNr, cName
ORDER BY Anzahl DESC;
 
Zuletzt bearbeitet:

HMside

Aktives Mitglied
14. April 2019
51
14
kleines Update, damit die Sortierung auch korrekt funktioniert:

Code:
SELECT cArtNr AS 'Artikel Nr.', cName AS Name, FORMAT(SUM(Anzahl), 'N2') AS Anzahl
FROM (
    SELECT
        cArtNr,
        cName,
        kStuecklistenVater,
  kAuftragPosition,
  SUM([fAnzahl]) AS Anzahl,
        ROW_NUMBER() OVER (PARTITION BY kStuecklistenVater ORDER BY kAuftragPosition) AS RowNum
    FROM Verkauf.lvAuftragsposition
    WHERE kAuftrag IN (@Keys) AND cArtNr != ''
    GROUP BY cArtNr, cName, kStuecklistenVater, kAuftragPosition
) AS RankedResults
WHERE RowNum = 1 OR kStuecklistenVater IS NULL
GROUP BY cArtNr, cName
ORDER BY CAST(SUM(Anzahl) AS FLOAT) DESC;
 

mh1

Sehr aktives Mitglied
4. Oktober 2020
1.259
337
In der Unterabfrage hat doch, wenn ich es richtig sehe, fAnzahl den Datentyp decimal. Folglich hat das obige SUM(Anzahl) auch den Datentyp decimal.
Jetzt konvertierst du den Wert mit Format() in eine Zeichenkette. Und um diese dann richtig sortieren zu können, konvertierst du diese Zeichen im GROUP BY in eine Fließkommazahl.
Wozu brauchst du denn das obere Format()?
 

HMside

Aktives Mitglied
14. April 2019
51
14
In der Unterabfrage hat doch, wenn ich es richtig sehe, fAnzahl den Datentyp decimal. Folglich hat das obige SUM(Anzahl) auch den Datentyp decimal.
Jetzt konvertierst du den Wert mit Format() in eine Zeichenkette. Und um diese dann richtig sortieren zu können, konvertierst du diese Zeichen im GROUP BY in eine Fließkommazahl.
Wozu brauchst du denn das obere Format()?
Vielen Dank für deinen Hinweis. So besser?

Code:
SELECT
    cArtNr AS 'Artikel Nr.',
    cName AS Name,
    CAST(SUM(Anzahl) AS DECIMAL(10, 2)) AS Anzahl
FROM (
    SELECT
        cArtNr,
        cName,
        kStuecklistenVater,
        kAuftragPosition,
        SUM(fAnzahl) AS Anzahl,
        ROW_NUMBER() OVER (PARTITION BY kStuecklistenVater ORDER BY kAuftragPosition) AS RowNum
    FROM Verkauf.lvAuftragsposition
    WHERE kAuftrag IN (@Keys) AND cArtNr != ''
    GROUP BY cArtNr, cName, kStuecklistenVater, kAuftragPosition
) AS RankedResults
WHERE RowNum = 1 OR kStuecklistenVater IS NULL
GROUP BY cArtNr, cName
ORDER BY SUM(Anzahl) DESC;
 

mh1

Sehr aktives Mitglied
4. Oktober 2020
1.259
337
Vielen Dank für deinen Hinweis. So besser?
Ah - jetzt verstehe ich erst, was du vorhast:
Dir gings wohl nur um die Anzeige der Nachkommastellen.

Ich kann dein Query bei mir nicht testen, weil ich eine andere Datenbankversion habe.
Du kannst aber immer wenn du was änderst die Laufzeit der Abfrage ankucken, um zu entscheiden, was besser ist (so wie z.b. hier FORMAT()/CAST()
Also temporär einfügen:
Code:
SET STATISTICS IO, TIME ON;
...Quey...
SET STATISTICS IO, TIME OFF;

Du solltest dir bei solchen Dingen, die du dir als "Eigene Übersicht" einbaust auch immer ganz genau den Ausfürhrungsplan anschauen.

Und prüfe mal, ob du das Subquery bauchst (ob evtl ein JOIN schneller ist....)

Falls aber die Performance in den Eigenen Übersichten ausreichend gut ist und dir deine bisherige Abfrage die Daten so liefert wie du sie willst, brauchst du ja auch nicht weiter daran rumbasteln ;)
 
Ähnliche Themen
Titel Forum Antworten Datum
Neu Eigene Übersicht Artikel - Zulaufsübersicht - Stückliste Eigene Übersichten in der JTL-Wawi 0
Neu Eigene Übersicht im Verkauf zu einem ausgewähltem Auftrag: Kundenattribut Anmerkungen Eigene Übersichten in der JTL-Wawi 4
Neu Eigene Felder Checkbox Inhalt bzw. Text bei Mouseover anzeigen JTL-Wawi - Ideen, Lob und Kritik 0
Neu Eigene Seiten mit Plugin erstellen Technische Fragen zu Plugins und Templates 0
Neu Eigene Felder Lieferschein User helfen Usern - Fragen zu JTL-Wawi 0
Neu Eigene Felder (Kunde) in csv-Datei per Ausgabe (Auftrag oder Lieferschein) Druck-/ E-Mail-/ Exportvorlagen in JTL-Wawi 0
Neu Eigene Felder des Auftrages in der Druckvorlage Druck-/ E-Mail-/ Exportvorlagen in JTL-Wawi 2
Eigene Felder für Ebay-Listings verwenden JTL-Wawi 1.8 0
Neu Eigene Felder im Verkauf als Spalten anzeigen User helfen Usern - Fragen zu JTL-Wawi 4
Eigene Felder in alte Vorlagen JTL-Wawi 1.8 5
In Diskussion eigene CustomWorkflows anlegen JTL-Workflows - Ideen, Lob und Kritik 1
Neu Artikel - Sprachen - Alle eigene SEO URL? Smalltalk 1
Neu Barcode Anpassung in Artikeletikett anhand Eigene Felder Druck-/ E-Mail-/ Exportvorlagen in JTL-Wawi 2
Neu Eigene Übersichten, Artikelhistorie Eigene Übersichten in der JTL-Wawi 1
Neu Sind eigene Felder im Artikel in einer neueren Wawi-Version von Anfang an sichtbar? User helfen Usern - Fragen zu JTL-Wawi 8
Eigene Auswertung JTL-Wawi 1.8 1
Neu Eigene Seiten Priority in der Sitemap ändern Allgemeine Fragen zu JTL-Shop 5
Neu Eigene Seite sichern Allgemeine Fragen zu JTL-Shop 1
Neu Wie importiere ich die Zahlungs-ID für meine eigene benutzerdefinierte Zahlung, wie es andere Anbieter wie Paypal und Molli Payments in Shopware 6? Onlineshop-Anbindung 0
Neu Skonto Anzeige in der Übersicht User helfen Usern - Fragen zu JTL-Wawi 5
Neu SQL Abfrage wird mehrfach ausgeführt - Ausgabe in der Übersicht falsch Eigene Übersichten in der JTL-Wawi 8
Neu Versandart schon in der Übersicht ändern anstatt den ganzen Auftrag zu öffnen JTL-Wawi - Ideen, Lob und Kritik 0
Artikel Übersicht leer JTL-Wawi 1.8 2
Neu Übersicht verkaufte Artikel mit Hinweis-Spalte Eigene Übersichten in der JTL-Wawi 0
Neu Beschaffung -> Bestellungen Übersicht = Filterung der Bestellungen JTL-Wawi - Ideen, Lob und Kritik 0
Neu Keine Übersicht mehr auf welcher Plattform ein Artikel eingestellt ist. JTL-Wawi - Fehler und Bugs 0

Ähnliche Themen