Neu Abfrage Pakete nach Gewicht, Menge und durchschnittliches Gewicht

Ante

Sehr aktives Mitglied
2. Juli 2019
242
68
In der WaWi -> Versand (F8) -> Lieferscheine -> Versendet -> Eigene Übersichten könnt ihr eine Auswertung machen, die euch die Summe der ausgewählten Aufträge zeigt. Hier habe ich eine Gewicht-Staffel hinterlegt, die die Anzahl der Pakete innerhalb dieser Spanne anzeigt. Zusätzlich wird die Gesamtanzahl aller Pakete, das Gesamtgewicht aller Pakete sowie das durchschnittliche Gewicht angezeigt. Sofern es mehrere Pakete innerhalb von einem Auftrag gibt, werden auch alle Pakete berücksichtigt.

SQL:
-- Teil 1: Die Gewichtsklassen 1 bis 8
SELECT
    CASE
        WHEN fGewicht <= 3 THEN '01. Gewicht 0 - 3 kg'
        WHEN fGewicht > 3 AND fGewicht <= 5 THEN '02. Gewicht 3,001 - 5 kg'
        WHEN fGewicht > 5 AND fGewicht <= 10 THEN '03. Gewicht 5,001 - 10 kg'
        WHEN fGewicht > 10 AND fGewicht <= 15 THEN '04. Gewicht 10,001 - 15 kg'
        WHEN fGewicht > 15 AND fGewicht <= 20 THEN '05. Gewicht 15,001 - 20 kg'
        WHEN fGewicht > 20 AND fGewicht <= 25 THEN '06. Gewicht 20,001 - 25 kg'
        WHEN fGewicht > 25 AND fGewicht <= 31.5 THEN '07. Gewicht 25,001 - 31,5 kg'
        WHEN fGewicht > 31.5 THEN '08. Gewicht über 31,5 kg'
    END AS [Kategorie / Kennzahl],
    CAST(COUNT(*) AS DECIMAL(10,2)) AS [Wert (Anzahl / kg)]
FROM Versand.lvLieferscheinpaket
WHERE kLieferschein IN (@Keys)
GROUP BY
    CASE
        WHEN fGewicht <= 3 THEN '01. Gewicht 0 - 3 kg'
        WHEN fGewicht > 3 AND fGewicht <= 5 THEN '02. Gewicht 3,001 - 5 kg'
        WHEN fGewicht > 5 AND fGewicht <= 10 THEN '03. Gewicht 5,001 - 10 kg'
        WHEN fGewicht > 10 AND fGewicht <= 15 THEN '04. Gewicht 10,001 - 15 kg'
        WHEN fGewicht > 15 AND fGewicht <= 20 THEN '05. Gewicht 15,001 - 20 kg'
        WHEN fGewicht > 20 AND fGewicht <= 25 THEN '06. Gewicht 20,001 - 25 kg'
        WHEN fGewicht > 25 AND fGewicht <= 31.5 THEN '07. Gewicht 25,001 - 31,5 kg'
        WHEN fGewicht > 31.5 THEN '08. Gewicht über 31,5 kg'
    END

UNION ALL

-- Zeile 9: Durchschnittsgewicht
SELECT
    '09. Durchschnittsgewicht (Gesamt)',
    CAST(AVG(fGewicht) AS DECIMAL(10,2))
FROM Versand.lvLieferscheinpaket
WHERE kLieferschein IN (@Keys)

UNION ALL

-- Zeile 10: Gesamtgewicht
SELECT
    '10. Gesamtgewicht (alle Aufträge)',
    CAST(SUM(fGewicht) AS DECIMAL(10,2))
FROM Versand.lvLieferscheinpaket
WHERE kLieferschein IN (@Keys)

UNION ALL

-- NEU: Zeile 11: Gesamtanzahl Pakete
SELECT
    '11. Gesamtanzahl Pakete',
    CAST(COUNT(*) AS DECIMAL(10,2))
FROM Versand.lvLieferscheinpaket
WHERE kLieferschein IN (@Keys)

ORDER BY [Kategorie / Kennzahl]
 
Zuletzt bearbeitet:

cg01

Sehr aktives Mitglied
20. Januar 2018
115
28
Funktioniert super.

Ist es möglich das ganze nach einer Versandart (ID eingeben reicht) zu filtern.
Das Gewicht ist ja nur bei DHL Paket relevant und für Kleinpaket nicht.
Ist das machbar?
 

John

Sehr aktives Mitglied
3. März 2012
4.216
1.089
Berlin
Ja, das müsste gehen mit

Code:
DECLARE @cVersandArtName VARCHAR (255) = 'DHL Paket'
-- Teil 1: Die Gewichtsklassen 1 bis 8
SELECT
    CASE
        WHEN fGewicht <= 3 THEN '01. Gewicht 0 - 3 kg'
        WHEN fGewicht > 3 AND fGewicht <= 5 THEN '02. Gewicht 3,001 - 5 kg'
        WHEN fGewicht > 5 AND fGewicht <= 10 THEN '03. Gewicht 5,001 - 10 kg'
        WHEN fGewicht > 10 AND fGewicht <= 15 THEN '04. Gewicht 10,001 - 15 kg'
        WHEN fGewicht > 15 AND fGewicht <= 20 THEN '05. Gewicht 15,001 - 20 kg'
        WHEN fGewicht > 20 AND fGewicht <= 25 THEN '06. Gewicht 20,001 - 25 kg'
        WHEN fGewicht > 25 AND fGewicht <= 31.5 THEN '07. Gewicht 25,001 - 31,5 kg'
        WHEN fGewicht > 31.5 THEN '08. Gewicht über 31,5 kg'
    END AS [Kategorie / Kennzahl],
    CAST(COUNT(*) AS DECIMAL(10,2)) AS [Wert (Anzahl / kg)]
FROM Versand.lvLieferscheinpaket
WHERE cVersandartName =  @cVersandArtName
AND kLieferschein IN (@Keys)
GROUP BY
    CASE
        WHEN fGewicht <= 3 THEN '01. Gewicht 0 - 3 kg'
        WHEN fGewicht > 3 AND fGewicht <= 5 THEN '02. Gewicht 3,001 - 5 kg'
        WHEN fGewicht > 5 AND fGewicht <= 10 THEN '03. Gewicht 5,001 - 10 kg'
        WHEN fGewicht > 10 AND fGewicht <= 15 THEN '04. Gewicht 10,001 - 15 kg'
        WHEN fGewicht > 15 AND fGewicht <= 20 THEN '05. Gewicht 15,001 - 20 kg'
        WHEN fGewicht > 20 AND fGewicht <= 25 THEN '06. Gewicht 20,001 - 25 kg'
        WHEN fGewicht > 25 AND fGewicht <= 31.5 THEN '07. Gewicht 25,001 - 31,5 kg'
        WHEN fGewicht > 31.5 THEN '08. Gewicht über 31,5 kg'
    END

UNION ALL

-- Zeile 9: Durchschnittsgewicht
SELECT
    '09. Durchschnittsgewicht (Gesamt)',
    CAST(AVG(fGewicht) AS DECIMAL(10,2))
FROM Versand.lvLieferscheinpaket
WHERE cVersandartName =  @cVersandArtName
AND kLieferschein IN (@Keys)

UNION ALL

-- Zeile 10: Gesamtgewicht
SELECT
    '10. Gesamtgewicht (alle Aufträge)',
    CAST(SUM(fGewicht) AS DECIMAL(10,2))
FROM Versand.lvLieferscheinpaket
WHERE cVersandartName =  @cVersandArtName
AND kLieferschein IN (@Keys)

In Der ersten Zeile den Namen der Versandart entsprechend anpassen.
 

Ähnliche Themen