In Diskussion Wöchentliche Auswertung aufs Handy als Workflow

Domando

Mitglied
16. Juli 2020
5
3
Hallo zusammen,

ich habe eine Auswertung erstellt, die wöchentlich auf mein Handy gesendet wird.
Vielleicht möchte jemand dies nutzen, deswegen stelle ich dies hier ein.

Zum Empfangen auf dem Handy nutze ich die App Pushover. Diese bietet die Möglichkeit Push-Nachrichten zu empfangen, die an eine generierte E-Mail Adresse gesendet werden. Man kann aber auch einfach eine E-Mail an sich versenden lassen, dann wird die App nicht benötigt.

Ich werte dabei folgende Werte aus:
Verkaufte Artikel (mit Vorwochenvergleich)
Summe Netto (mit Vorwochenvergleich)
Versendete Pakete (mit Vorwochenvergleich)
Stornoquote (mit Vorwochenvergleich)
Retourenquote (mit Vorwochenvergleich)
durchschnittliche Versandzeit anhand des ersten versendeten Paketes (mit Vorwochenvergleich)
Top Kindartikel
Top Vaterartikel
Top Serie
Top Farbe (anhand der Bezeichnung "Farbe" in Variationskombinationen)

Genutzt wird dafür ein Workflow unter "Auftrag" -> "erstellt" mit einem zeitverzögerten Ausführungsplan um 09.00 Uhr am Montag. Bedingungen habe ich keine definiert, da dieser jede Woche ausgeführt werden soll.
Die Aktion ist E-Mail senden mit der Empfängeradresse aus Pushover.
In den Betreff kommt:
Code:
{% assign kw = 'SELECT DATEPART(iso_week, DATEADD(week,-1,CURRENT_TIMESTAMP))' | DirectQueryScalar -%}
Statistik für KW {{ kw }}
In den Text kommt:
Code:
{% assign art_verkauf = 'SELECT CAST (SUM (nAnzahl) AS INT) FROM [eazybusiness].[dbo].[tbestellpos] bestellpos INNER JOIN tBestellung bestellung ON bestellpos.tBestellung_kBestellung = bestellung.kBestellung WHERE nStorno = 0 AND nType = 1 AND dErstellt BETWEEN CAST(DATEADD(WEEK, -1 ,DATEADD(DAY, -DATEPART(WEEKDAY, CURRENT_TIMESTAMP) + 1, CURRENT_TIMESTAMP)) AS DATE) AND CAST(DATEADD(WEEK, -1, DATEADD(DAY, -DATEPART(WEEKDAY, CURRENT_TIMESTAMP) + 8, CURRENT_TIMESTAMP)) AS DATE)' | DirectQueryScalar -%}
{% assign art_mehrverkauf_vorwoche = 'SELECT (SELECT CAST (SUM (nAnzahl) AS INT) FROM [eazybusiness].[dbo].[tbestellpos] bestellpos INNER JOIN tBestellung bestellung ON bestellpos.tBestellung_kBestellung = bestellung.kBestellung WHERE nStorno = 0 AND nType = 1 AND dErstellt BETWEEN CAST(DATEADD(WEEK, -1 ,DATEADD(DAY, -DATEPART(WEEKDAY, CURRENT_TIMESTAMP) + 1, CURRENT_TIMESTAMP)) AS DATE) AND CAST(DATEADD(WEEK, -1, DATEADD(DAY, -DATEPART(WEEKDAY, CURRENT_TIMESTAMP) + 8, CURRENT_TIMESTAMP)) AS DATE))-(SELECT CAST (SUM (nAnzahl) AS INT) FROM [eazybusiness].[dbo].[tbestellpos] bestellpos INNER JOIN tBestellung bestellung ON bestellpos.tBestellung_kBestellung = bestellung.kBestellung WHERE nStorno = 0 AND nType = 1 AND dErstellt BETWEEN CAST(DATEADD(WEEK, -2 ,DATEADD(DAY, -DATEPART(WEEKDAY, CURRENT_TIMESTAMP) + 1, CURRENT_TIMESTAMP)) AS DATE) AND CAST(DATEADD(WEEK, -2, DATEADD(DAY, -DATEPART(WEEKDAY, CURRENT_TIMESTAMP) + 8, CURRENT_TIMESTAMP)) AS DATE))' | DirectQueryScalar -%}
{% assign pkt_versand = 'SELECT COUNT (kVersand) FROM [eazybusiness].[dbo].[tVersand] WHERE dVersendet BETWEEN CAST(DATEADD(WEEK, -1 ,DATEADD(DAY, -DATEPART(WEEKDAY, CURRENT_TIMESTAMP) + 1, CURRENT_TIMESTAMP)) AS DATE) AND CAST(DATEADD(WEEK, -1, DATEADD(DAY, -DATEPART(WEEKDAY, CURRENT_TIMESTAMP) + 8, CURRENT_TIMESTAMP)) AS DATE)' | DirectQueryScalar -%}
{% assign pkt_mehrversand_vorwoche = 'SELECT (SELECT COUNT (kVersand) FROM [eazybusiness].[dbo].[tVersand] WHERE dVersendet BETWEEN CAST(DATEADD(WEEK, -1 ,DATEADD(DAY, -DATEPART(WEEKDAY, CURRENT_TIMESTAMP) + 1, CURRENT_TIMESTAMP)) AS DATE) AND CAST(DATEADD(WEEK, -1, DATEADD(DAY, -DATEPART(WEEKDAY, CURRENT_TIMESTAMP) + 8, CURRENT_TIMESTAMP)) AS DATE))-(SELECT COUNT (kVersand) FROM [eazybusiness].[dbo].[tVersand] WHERE dVersendet BETWEEN CAST(DATEADD(WEEK, -2 ,DATEADD(DAY, -DATEPART(WEEKDAY, CURRENT_TIMESTAMP) + 1, CURRENT_TIMESTAMP)) AS DATE) AND CAST(DATEADD(WEEK, -2, DATEADD(DAY, -DATEPART(WEEKDAY, CURRENT_TIMESTAMP) + 8, CURRENT_TIMESTAMP)) AS DATE))' | DirectQueryScalar -%}
{% assign netto_verkauf = 'SELECT CAST(SUM (nAnzahl*fVKNetto) AS DECIMAL(18,2)) FROM [eazybusiness].[dbo].[tbestellpos] bestellpos INNER JOIN tBestellung bestellung ON bestellpos.tBestellung_kBestellung = bestellung.kBestellung WHERE nStorno = 0 AND dErstellt BETWEEN CAST(DATEADD(WEEK, -1 ,DATEADD(DAY, -DATEPART(WEEKDAY, CURRENT_TIMESTAMP) + 1, CURRENT_TIMESTAMP)) AS DATE) AND CAST(DATEADD(WEEK, -1, DATEADD(DAY, -DATEPART(WEEKDAY, CURRENT_TIMESTAMP) + 8, CURRENT_TIMESTAMP)) AS DATE)' | DirectQueryScalar -%}
{% assign netto_mehrverkauf_vorwoche = 'SELECT (SELECT CAST(SUM (nAnzahl*fVKNetto) AS DECIMAL(18,2)) FROM [eazybusiness].[dbo].[tbestellpos] bestellpos INNER JOIN tBestellung bestellung ON bestellpos.tBestellung_kBestellung = bestellung.kBestellung WHERE nStorno = 0 AND dErstellt BETWEEN CAST(DATEADD(WEEK, -1 ,DATEADD(DAY, -DATEPART(WEEKDAY, CURRENT_TIMESTAMP) + 1, CURRENT_TIMESTAMP)) AS DATE) AND CAST(DATEADD(WEEK, -1, DATEADD(DAY, -DATEPART(WEEKDAY, CURRENT_TIMESTAMP) + 8, CURRENT_TIMESTAMP)) AS DATE))-(SELECT CAST(SUM (nAnzahl*fVKNetto) AS DECIMAL(18,2)) FROM [eazybusiness].[dbo].[tbestellpos] bestellpos INNER JOIN tBestellung bestellung ON bestellpos.tBestellung_kBestellung = bestellung.kBestellung WHERE nStorno = 0 AND dErstellt BETWEEN CAST(DATEADD(WEEK, -2 ,DATEADD(DAY, -DATEPART(WEEKDAY, CURRENT_TIMESTAMP) + 1, CURRENT_TIMESTAMP)) AS DATE) AND CAST(DATEADD(WEEK, -2, DATEADD(DAY, -DATEPART(WEEKDAY, CURRENT_TIMESTAMP) + 8, CURRENT_TIMESTAMP)) AS DATE))' | DirectQueryScalar -%}
{% assign top_kind = 'SELECT TOP (1) artikelbescr.cName FROM [eazybusiness].[dbo].[tbestellpos] bestellpos INNER JOIN tBestellung bestellung ON bestellpos.tBestellung_kBestellung = bestellung.kBestellung INNER JOIN tArtikelBeschreibung artikelbescr ON bestellpos.tArtikel_kArtikel = artikelbescr.kArtikel WHERE artikelbescr.kSprache = 1 AND artikelbescr.kShop = 0 AND artikelbescr.kPlattform = 1 AND nStorno = 0 AND nType = 1 AND dErstellt BETWEEN CAST(DATEADD(WEEK, -1 ,DATEADD(DAY, -DATEPART(WEEKDAY, CURRENT_TIMESTAMP) + 1, CURRENT_TIMESTAMP)) AS DATE) AND CAST(DATEADD(WEEK, -1, DATEADD(DAY, -DATEPART(WEEKDAY, CURRENT_TIMESTAMP) + 8, CURRENT_TIMESTAMP)) AS DATE) GROUP BY artikelbescr.cName ORDER BY SUM (nAnzahl) DESC' | DirectQueryScalar -%}
{% assign top_kind_anzahl = 'SELECT TOP (1) CAST (SUM (nAnzahl) AS INT) AS Anzahl FROM [eazybusiness].[dbo].[tbestellpos] bestellpos INNER JOIN tBestellung bestellung ON bestellpos.tBestellung_kBestellung = bestellung.kBestellung INNER JOIN tArtikelBeschreibung artikelbescr ON bestellpos.tArtikel_kArtikel = artikelbescr.kArtikel WHERE artikelbescr.kSprache = 1 AND artikelbescr.kShop = 0 AND artikelbescr.kPlattform = 1 AND nStorno = 0 AND nType = 1 AND dErstellt BETWEEN CAST(DATEADD(WEEK, -1 ,DATEADD(DAY, -DATEPART(WEEKDAY, CURRENT_TIMESTAMP) + 1, CURRENT_TIMESTAMP)) AS DATE) AND CAST(DATEADD(WEEK, -1, DATEADD(DAY, -DATEPART(WEEKDAY, CURRENT_TIMESTAMP) + 8, CURRENT_TIMESTAMP)) AS DATE) GROUP BY artikelbescr.cName ORDER BY Anzahl DESC' | DirectQueryScalar -%}
{% assign top_vater = 'SELECT TOP (1) artikelbescr.cName FROM [eazybusiness].[dbo].[tbestellpos] bestellpos INNER JOIN tBestellung bestellung ON bestellpos.tBestellung_kBestellung = bestellung.kBestellung INNER JOIN tArtikel artikel ON artikel.kArtikel = bestellpos.tArtikel_kArtikel INNER JOIN tArtikelBeschreibung artikelbescr ON artikel.kVaterArtikel = artikelbescr.kArtikel WHERE artikelbescr.kSprache = 1 AND artikelbescr.kShop = 0 AND artikelbescr.kPlattform = 1 AND nStorno = 0 AND nType = 1 AND dErstellt BETWEEN CAST(DATEADD(WEEK, -1 ,DATEADD(DAY, -DATEPART(WEEKDAY, CURRENT_TIMESTAMP) + 1, CURRENT_TIMESTAMP)) AS DATE) AND CAST(DATEADD(WEEK, -1, DATEADD(DAY, -DATEPART(WEEKDAY, CURRENT_TIMESTAMP) + 8, CURRENT_TIMESTAMP)) AS DATE) GROUP BY artikelbescr.cName ORDER BY SUM (nAnzahl) DESC' | DirectQueryScalar -%}
{% assign top_vater_anzahl = 'SELECT TOP (1) CAST (SUM (nAnzahl) AS INT) AS Anzahl FROM [eazybusiness].[dbo].[tbestellpos] bestellpos INNER JOIN tBestellung bestellung ON bestellpos.tBestellung_kBestellung = bestellung.kBestellung INNER JOIN tArtikel artikel ON artikel.kArtikel = bestellpos.tArtikel_kArtikel INNER JOIN tArtikelBeschreibung artikelbescr ON artikel.kVaterArtikel = artikelbescr.kArtikel WHERE artikelbescr.kSprache = 1 AND artikelbescr.kShop = 0 AND artikelbescr.kPlattform = 1 AND nStorno = 0 AND nType = 1 AND dErstellt BETWEEN CAST(DATEADD(WEEK, -1 ,DATEADD(DAY, -DATEPART(WEEKDAY, CURRENT_TIMESTAMP) + 1, CURRENT_TIMESTAMP)) AS DATE) AND CAST(DATEADD(WEEK, -1, DATEADD(DAY, -DATEPART(WEEKDAY, CURRENT_TIMESTAMP) + 8, CURRENT_TIMESTAMP)) AS DATE) GROUP BY artikelbescr.cName ORDER BY Anzahl DESC' | DirectQueryScalar -%}
{% assign top_serie = 'SELECT TOP (1) cSerie FROM [eazybusiness].[dbo].[tbestellpos] bestellpos INNER JOIN tBestellung bestellung ON bestellpos.tBestellung_kBestellung = bestellung.kBestellung INNER JOIN tArtikel artikel ON artikel.kArtikel = bestellpos.tArtikel_kArtikel WHERE nStorno = 0 AND nType = 1 AND dErstellt BETWEEN CAST(DATEADD(WEEK, -1 ,DATEADD(DAY, -DATEPART(WEEKDAY, CURRENT_TIMESTAMP) + 1, CURRENT_TIMESTAMP)) AS DATE) AND CAST(DATEADD(WEEK, -1, DATEADD(DAY, -DATEPART(WEEKDAY, CURRENT_TIMESTAMP) + 8, CURRENT_TIMESTAMP)) AS DATE) GROUP BY cSerie ORDER BY SUM (nAnzahl) DESC' | DirectQueryScalar -%}
{% assign top_serie_anzahl = 'SELECT TOP (1) CAST (SUM (nAnzahl) AS INT) AS Anzahl FROM [eazybusiness].[dbo].[tbestellpos] bestellpos INNER JOIN tBestellung bestellung ON bestellpos.tBestellung_kBestellung = bestellung.kBestellung INNER JOIN tArtikel artikel ON artikel.kArtikel = bestellpos.tArtikel_kArtikel WHERE nStorno = 0 AND nType = 1 AND dErstellt BETWEEN CAST(DATEADD(WEEK, -1 ,DATEADD(DAY, -DATEPART(WEEKDAY, CURRENT_TIMESTAMP) + 1, CURRENT_TIMESTAMP)) AS DATE) AND CAST(DATEADD(WEEK, -1, DATEADD(DAY, -DATEPART(WEEKDAY, CURRENT_TIMESTAMP) + 8, CURRENT_TIMESTAMP)) AS DATE) GROUP BY cSerie ORDER BY Anzahl DESC' | DirectQueryScalar -%}
{% capture farbquery -%} SELECT TOP (1) eigenschaftwertsprache.cName FROM [eazybusiness].[dbo].[tbestellpos] bestellpos INNER JOIN tBestellung bestellung ON bestellpos.tBestellung_kBestellung = bestellung.kBestellung INNER JOIN tArtikel artikel ON artikel.kArtikel = bestellpos.tArtikel_kArtikel INNER JOIN tEigenschaftKombiWert eigenschaftkombiwert ON eigenschaftkombiwert.kEigenschaftKombi = artikel.kEigenschaftKombi INNER JOIN tEigenschaftSprache eigenschaftsprache ON eigenschaftsprache.kEigenschaft = eigenschaftkombiwert.kEigenschaft INNER JOIN tEigenschaftWertSprache eigenschaftwertsprache ON eigenschaftwertsprache.kEigenschaftWert = eigenschaftkombiwert.kEigenschaftWert WHERE nStorno = 0 AND nType = 1 AND dErstellt BETWEEN CAST(DATEADD(WEEK, -1 ,DATEADD(DAY, -DATEPART(WEEKDAY, CURRENT_TIMESTAMP) + 1, CURRENT_TIMESTAMP)) AS DATE) AND CAST(DATEADD(WEEK, -1, DATEADD(DAY, -DATEPART(WEEKDAY, CURRENT_TIMESTAMP) + 8, CURRENT_TIMESTAMP)) AS DATE) AND eigenschaftsprache.kSprache = 1 AND eigenschaftsprache.cName LIKE '%Farbe%' AND eigenschaftwertsprache.kSprache = 1 GROUP BY eigenschaftwertsprache.cName ORDER BY SUM (nAnzahl) DESC {% endcapture -%}
{% assign top_farbe = farbquery | DirectQueryScalar -%}
{% capture farbanzahlquery -%} SELECT TOP (1) CAST (SUM (nAnzahl) AS INT) AS Anzahl FROM [eazybusiness].[dbo].[tbestellpos] bestellpos INNER JOIN tBestellung bestellung ON bestellpos.tBestellung_kBestellung = bestellung.kBestellung INNER JOIN tArtikel artikel ON artikel.kArtikel = bestellpos.tArtikel_kArtikel INNER JOIN tEigenschaftKombiWert eigenschaftkombiwert ON eigenschaftkombiwert.kEigenschaftKombi = artikel.kEigenschaftKombi INNER JOIN tEigenschaftSprache eigenschaftsprache ON eigenschaftsprache.kEigenschaft = eigenschaftkombiwert.kEigenschaft INNER JOIN tEigenschaftWertSprache eigenschaftwertsprache ON eigenschaftwertsprache.kEigenschaftWert = eigenschaftkombiwert.kEigenschaftWert WHERE nStorno = 0 AND nType = 1 AND dErstellt BETWEEN CAST(DATEADD(WEEK, -1 ,DATEADD(DAY, -DATEPART(WEEKDAY, CURRENT_TIMESTAMP) + 1, CURRENT_TIMESTAMP)) AS DATE) AND CAST(DATEADD(WEEK, -1, DATEADD(DAY, -DATEPART(WEEKDAY, CURRENT_TIMESTAMP) + 8, CURRENT_TIMESTAMP)) AS DATE) AND eigenschaftsprache.kSprache = 1 AND eigenschaftsprache.cName LIKE '%Farbe%' AND eigenschaftwertsprache.kSprache = 1 GROUP BY eigenschaftwertsprache.cName ORDER BY Anzahl DESC {% endcapture -%}
{% assign top_farbe_anzahl = farbanzahlquery | DirectQueryScalar -%}
{% assign stornoquote = 'SELECT CAST(CAST((SELECT COUNT (nStorno) AS Storno FROM [eazybusiness].[dbo].[tBestellung] storno WHERE nStorno = 1 AND dErstellt BETWEEN CAST(DATEADD(WEEK, -1 ,DATEADD(DAY, -DATEPART(WEEKDAY, CURRENT_TIMESTAMP) + 1, CURRENT_TIMESTAMP)) AS DATE) AND CAST(DATEADD(WEEK, -1, DATEADD(DAY, -DATEPART(WEEKDAY, CURRENT_TIMESTAMP) + 8, CURRENT_TIMESTAMP)) AS DATE)) AS DECIMAL(18,2)) / CAST((SELECT COUNT (nStorno) AS NonStorno FROM [eazybusiness].[dbo].[tBestellung] nonstorno WHERE nStorno = 0 AND dErstellt BETWEEN CAST(DATEADD(WEEK, -1 ,DATEADD(DAY, -DATEPART(WEEKDAY, CURRENT_TIMESTAMP) + 1, CURRENT_TIMESTAMP)) AS DATE) AND CAST(DATEADD(WEEK, -1, DATEADD(DAY, -DATEPART(WEEKDAY, CURRENT_TIMESTAMP) + 8, CURRENT_TIMESTAMP)) AS DATE)) AS DECIMAL(18,2))*100 AS DECIMAL(18,2))' | DirectQueryScalar -%}
{% assign diff_stornoquote_vorwoche = 'SELECT (SELECT CAST(CAST((SELECT COUNT (nStorno) AS Storno FROM [eazybusiness].[dbo].[tBestellung] storno WHERE nStorno = 1 AND dErstellt BETWEEN CAST(DATEADD(WEEK, -1 ,DATEADD(DAY, -DATEPART(WEEKDAY, CURRENT_TIMESTAMP) + 1, CURRENT_TIMESTAMP)) AS DATE) AND CAST(DATEADD(WEEK, -1, DATEADD(DAY, -DATEPART(WEEKDAY, CURRENT_TIMESTAMP) + 8, CURRENT_TIMESTAMP)) AS DATE)) AS DECIMAL(18,2)) / CAST((SELECT COUNT (nStorno) AS NonStorno FROM [eazybusiness].[dbo].[tBestellung] nonstorno WHERE nStorno = 0 AND dErstellt BETWEEN CAST(DATEADD(WEEK, -1 ,DATEADD(DAY, -DATEPART(WEEKDAY, CURRENT_TIMESTAMP) + 1, CURRENT_TIMESTAMP)) AS DATE) AND CAST(DATEADD(WEEK, -1, DATEADD(DAY, -DATEPART(WEEKDAY, CURRENT_TIMESTAMP) + 8, CURRENT_TIMESTAMP)) AS DATE)) AS DECIMAL(18,2))*100 AS DECIMAL(18,2)))-(SELECT CAST(CAST((SELECT COUNT (nStorno) AS Storno FROM [eazybusiness].[dbo].[tBestellung] storno WHERE nStorno = 1 AND dErstellt BETWEEN CAST(DATEADD(WEEK, -1 ,DATEADD(DAY, -DATEPART(WEEKDAY, CURRENT_TIMESTAMP) + 1, CURRENT_TIMESTAMP)) AS DATE) AND CAST(DATEADD(WEEK, -1, DATEADD(DAY, -DATEPART(WEEKDAY, CURRENT_TIMESTAMP) + 8, CURRENT_TIMESTAMP)) AS DATE)) AS DECIMAL(18,2)) / CAST((SELECT COUNT (nStorno) AS NonStorno FROM [eazybusiness].[dbo].[tBestellung] nonstorno WHERE nStorno = 0 AND dErstellt BETWEEN CAST(DATEADD(WEEK, -2 ,DATEADD(DAY, -DATEPART(WEEKDAY, CURRENT_TIMESTAMP) + 1, CURRENT_TIMESTAMP)) AS DATE) AND CAST(DATEADD(WEEK, -2, DATEADD(DAY, -DATEPART(WEEKDAY, CURRENT_TIMESTAMP) + 8, CURRENT_TIMESTAMP)) AS DATE)) AS DECIMAL(18,2))*100 AS DECIMAL(18,2)))' | DirectQueryScalar -%}
{% assign retourenquote = 'SELECT CAST(CAST((SELECT COUNT (kRMRetoure) FROM [eazybusiness].[dbo].[tRMRetoure] WHERE dErstellt BETWEEN CAST(DATEADD(WEEK, -1 ,DATEADD(DAY, -DATEPART(WEEKDAY, CURRENT_TIMESTAMP) + 1, CURRENT_TIMESTAMP)) AS DATE) AND CAST(DATEADD(WEEK, -1, DATEADD(DAY, -DATEPART(WEEKDAY, CURRENT_TIMESTAMP) + 8, CURRENT_TIMESTAMP)) AS DATE)) AS DECIMAL(18,2)) / CAST((SELECT COUNT (nStorno) AS NonStorno FROM [eazybusiness].[dbo].[tBestellung] nonstorno WHERE nStorno = 0 AND dErstellt BETWEEN CAST(DATEADD(WEEK, -1 ,DATEADD(DAY, -DATEPART(WEEKDAY, CURRENT_TIMESTAMP) + 1, CURRENT_TIMESTAMP)) AS DATE) AND CAST(DATEADD(WEEK, -1, DATEADD(DAY, -DATEPART(WEEKDAY, CURRENT_TIMESTAMP) + 8, CURRENT_TIMESTAMP)) AS DATE)) AS DECIMAL(18,2))*100 AS DECIMAL(18,2))' | DirectQueryScalar -%}
{% assign diff_retourenquote_vorwoche = 'SELECT (SELECT CAST(CAST((SELECT COUNT (kRMRetoure) FROM [eazybusiness].[dbo].[tRMRetoure] WHERE dErstellt BETWEEN CAST(DATEADD(WEEK, -1 ,DATEADD(DAY, -DATEPART(WEEKDAY, CURRENT_TIMESTAMP) + 1, CURRENT_TIMESTAMP)) AS DATE) AND CAST(DATEADD(WEEK, -1, DATEADD(DAY, -DATEPART(WEEKDAY, CURRENT_TIMESTAMP) + 8, CURRENT_TIMESTAMP)) AS DATE)) AS DECIMAL(18,2)) / CAST((SELECT COUNT (nStorno) AS NonStorno FROM [eazybusiness].[dbo].[tBestellung] nonstorno WHERE nStorno = 0 AND dErstellt BETWEEN CAST(DATEADD(WEEK, -1 ,DATEADD(DAY, -DATEPART(WEEKDAY, CURRENT_TIMESTAMP) + 1, CURRENT_TIMESTAMP)) AS DATE) AND CAST(DATEADD(WEEK, -1, DATEADD(DAY, -DATEPART(WEEKDAY, CURRENT_TIMESTAMP) + 8, CURRENT_TIMESTAMP)) AS DATE)) AS DECIMAL(18,2))*100 AS DECIMAL(18,2)))-(SELECT CAST(CAST((SELECT COUNT (kRMRetoure) FROM [eazybusiness].[dbo].[tRMRetoure] WHERE dErstellt BETWEEN CAST(DATEADD(WEEK, -1 ,DATEADD(DAY, -DATEPART(WEEKDAY, CURRENT_TIMESTAMP) + 1, CURRENT_TIMESTAMP)) AS DATE) AND CAST(DATEADD(WEEK, -1, DATEADD(DAY, -DATEPART(WEEKDAY, CURRENT_TIMESTAMP) + 8, CURRENT_TIMESTAMP)) AS DATE)) AS DECIMAL(18,2)) / CAST((SELECT COUNT (nStorno) AS NonStorno FROM [eazybusiness].[dbo].[tBestellung] nonstorno WHERE nStorno = 0 AND dErstellt BETWEEN CAST(DATEADD(WEEK, -2 ,DATEADD(DAY, -DATEPART(WEEKDAY, CURRENT_TIMESTAMP) + 1, CURRENT_TIMESTAMP)) AS DATE) AND CAST(DATEADD(WEEK, -2, DATEADD(DAY, -DATEPART(WEEKDAY, CURRENT_TIMESTAMP) + 8, CURRENT_TIMESTAMP)) AS DATE)) AS DECIMAL(18,2))*100 AS DECIMAL(18,2)))' | DirectQueryScalar -%}
{% assign versandzeit = 'SELECT CAST (AVG(CAST(Versandzeit AS DECIMAL(18,2))) AS DECIMAL(18,2)) FROM (SELECT DateDiff("d",bestellung.dErstellt,MIN([dVersendet]))-DateDiff("ww",bestellung.dErstellt,MIN([dVersendet]))*2+CASE WHEN DateDiff("ww",bestellung.dErstellt,MIN([dVersendet]))=0 THEN 0 ELSE 1+ (CASE WHEN DATEPART(Weekday,bestellung.dErstellt)=1 THEN 1 ELSE 0 END)+(CASE WHEN DATEPART(Weekday,MIN([dVersendet]))=7 THEN 1 ELSE 0 END) END AS Versandzeit FROM [eazybusiness].[dbo].[tVersand] versand INNER JOIN tLieferschein lieferschein ON lieferschein.kLieferschein = versand.kLieferschein INNER JOIN tBestellung bestellung ON bestellung.kBestellung = lieferschein.kBestellung WHERE dVersendet BETWEEN CAST(DATEADD(WEEK, -1 ,DATEADD(DAY, -DATEPART(WEEKDAY, CURRENT_TIMESTAMP) + 1, CURRENT_TIMESTAMP)) AS DATE) AND CAST(DATEADD(WEEK, -1, DATEADD(DAY, -DATEPART(WEEKDAY, CURRENT_TIMESTAMP) + 8, CURRENT_TIMESTAMP)) AS DATE) GROUP BY versand.kLieferschein, bestellung.dErstellt) ver' | DirectQueryScalar -%}
{% assign diff_versandzeit_vorwoche = 'SELECT (SELECT CAST (AVG(CAST(Versandzeit AS DECIMAL(18,2))) AS DECIMAL(18,2)) FROM (SELECT DateDiff("d",bestellung.dErstellt,MIN([dVersendet]))-DateDiff("ww",bestellung.dErstellt,MIN([dVersendet]))*2+CASE WHEN DateDiff("ww",bestellung.dErstellt,MIN([dVersendet]))=0 THEN 0 ELSE 1+ (CASE WHEN DATEPART(Weekday,bestellung.dErstellt)=1 THEN 1 ELSE 0 END)+(CASE WHEN DATEPART(Weekday,MIN([dVersendet]))=7 THEN 1 ELSE 0 END) END AS Versandzeit FROM [eazybusiness].[dbo].[tVersand] versand INNER JOIN tLieferschein lieferschein ON lieferschein.kLieferschein = versand.kLieferschein INNER JOIN tBestellung bestellung ON bestellung.kBestellung = lieferschein.kBestellung WHERE dVersendet BETWEEN CAST(DATEADD(WEEK, -1 ,DATEADD(DAY, -DATEPART(WEEKDAY, CURRENT_TIMESTAMP) + 1, CURRENT_TIMESTAMP)) AS DATE) AND CAST(DATEADD(WEEK, -1, DATEADD(DAY, -DATEPART(WEEKDAY, CURRENT_TIMESTAMP) + 8, CURRENT_TIMESTAMP)) AS DATE) GROUP BY versand.kLieferschein, bestellung.dErstellt) ver)-(SELECT CAST (AVG(CAST(Versandzeit AS DECIMAL(18,2))) AS DECIMAL(18,2)) FROM (SELECT DateDiff("d",bestellung.dErstellt,MIN([dVersendet]))-DateDiff("ww",bestellung.dErstellt,MIN([dVersendet]))*2+CASE WHEN DateDiff("ww",bestellung.dErstellt,MIN([dVersendet]))=0 THEN 0 ELSE 1+ (CASE WHEN DATEPART(Weekday,bestellung.dErstellt)=1 THEN 1 ELSE 0 END)+(CASE WHEN DATEPART(Weekday,MIN([dVersendet]))=7 THEN 1 ELSE 0 END) END AS Versandzeit FROM [eazybusiness].[dbo].[tVersand] versand INNER JOIN tLieferschein lieferschein ON lieferschein.kLieferschein = versand.kLieferschein INNER JOIN tBestellung bestellung ON bestellung.kBestellung = lieferschein.kBestellung WHERE dVersendet BETWEEN CAST(DATEADD(WEEK, -2 ,DATEADD(DAY, -DATEPART(WEEKDAY, CURRENT_TIMESTAMP) + 1, CURRENT_TIMESTAMP)) AS DATE) AND CAST(DATEADD(WEEK, -2, DATEADD(DAY, -DATEPART(WEEKDAY, CURRENT_TIMESTAMP) + 8, CURRENT_TIMESTAMP)) AS DATE) GROUP BY versand.kLieferschein, bestellung.dErstellt) ver)' | DirectQueryScalar -%}
{% assign kw = 'SELECT DATEPART(iso_week, DATEADD(week,-1,CURRENT_TIMESTAMP))' | DirectQueryScalar -%}
Verkaufte Artikel: {{ art_verkauf }} ({% if art_mehrverkauf_vorwoche > 0 %}+{% endif %}{{ art_mehrverkauf_vorwoche }})
Summe Netto: {{ netto_verkauf }} € ({% if netto_mehrverkauf_vorwoche > 0 %}+{% endif %}{{ netto_mehrverkauf_vorwoche }} €)
Versendete Pakete: {{ pkt_versand }} ({% if pkt_mehrversand_vorwoche > 0 %}+{% endif %}{{ pkt_mehrversand_vorwoche }})

Stornoquote: {{ stornoquote }}% ({% if diff_stornoquote_vorwoche > 0 %}+{% endif %}{{ diff_stornoquote_vorwoche }}%)
Retourenquote: {{ retourenquote }}% ({% if diff_retourenquote_vorwoche > 0 %}+{% endif %}{{ diff_retourenquote_vorwoche }}%)
durchschnittliche Versandzeit: {{ versandzeit }} Tage ({% if diff_versandzeit_vorwoche > 0 %}+{% endif %}{{ diff_versandzeit_vorwoche }} Tage)

Top Kindartikel: {{ top_kind_anzahl }}x {{ top_kind }}
Top Vaterartikel: {{ top_vater_anzahl }}x {{ top_vater }}
Top Serie: {{ top_serie_anzahl }}x {{ top_serie }}
Top Farbe: {{top_farbe_anzahl }}x {{ top_farbe }}
Das Ergebnis sieht dann so aus:

Verkaufte Artikel: 1000 (+500)
Summe Netto: 100000 € (+50000 €)
Versendete Pakete: 1000 (+500)

Stornoquote: 15,00% (-5,00%)
Retourenquote: 15,00% (-10,00%)
durchschnittliche Versandzeit: 1,50 Tage (-2,00 Tage)

Top Kindartikel: 10x Socke in schwarz M
Top Vaterartikel: 50x Socke
Top Serie: 100x bunte Socken
Top Farbe: 200x Schwarz
 
  • Gefällt mir
Reaktionen: ht_m und hula1499

hula1499

Sehr aktives Mitglied
22. Juni 2011
4.328
737
Super coole Sache!!!

Darf ich fragen, wie viele Bestellungen du pro Woche hast?

Ok, egal, einfach mal probiert.
Abfrage geht wirklich flott, auch bei einer hohen 5stelligen Anzahl (4-5 Sek., gefühlt).

Bei Variationskombi Artikel halt viell. nicht soooo optimal, aber könnte man ja anpassen.
 
Zuletzt bearbeitet:

Domando

Mitglied
16. Juli 2020
5
3
Da das ja im Hintergrund ausgeführt wird und auch nur einmal wöchentlich, sollte die Geschwindigkeit auch nicht so kritisch sein.
Allerdings sollte noch ausgewählt, dass nur das letzte Ereignis ausgeführt werden sollte (unter Ausführungsplan), ansonsten bekommt man viele Meldungen am Anfang der Woche.

Und natürlich, hier kann viel angepasst werden, für mich waren das interessante Kennziffern, da hat bestimmt jeder andere.