Neu SQL für noch nie Verkaufte Artikel auf Marktplätzen.

arich001

Sehr aktives Mitglied
21. April 2021
285
35
Halöchen,
ich hab mir eine Abfrage gebastelt die mir für alle unsere Marktplätze (JTL-Shops, Amazon, ebay) von jedem Artikel die Tage seit letztem Verkauf anzeigt.
Leider finde ich aber keine Möglichkein da auch echte Penner, also noch nie verkaufte Artikel anzuzeigen.

Meine Abfrage erzeuge ich aus der tArtikelHistory mit unseren Benutzer "18" (Login vom Packtisch)
Andere Ansätze direkt über die Platformen von tArtikelBeschreibung zu gehen hat leider immer zu fehlerhaften Daten geführt

Hat einer ne Idee wie man da vorgehen könnte ?


Hier mein aktueller Code:
SQL:
WITH LetzterWarenausgang AS (
    SELECT
        ah.kArtikel,
        MAX(ah.dGebucht) AS LetztesAusgangsdatum
    FROM tArtikelHistory AS ah
    WHERE
        ah.kBuchungsart = '20'   -- Warenausgang
        AND ah.kBenutzer = '18'  -- Benutzer vom JTL-Packtisch+
    GROUP BY ah.kArtikel
)
SELECT
  a.cArtNr AS 'Artikelnr',
  MAX(ab.cName) AS 'Artikelbeschreibung',  -- Nimmt eine beliebige Beschreibung pro Artikel
  DATEDIFF(day, lw.LetztesAusgangsdatum, GETDATE()) AS 'Tage seit letztem Warenausgang'
FROM
  tArtikel AS a
  JOIN LetzterWarenausgang lw ON a.kArtikel = lw.kArtikel
  LEFT JOIN tArtikelBeschreibung ab ON a.kArtikel = ab.kArtikel AND ab.kSprache = 1
GROUP BY
  a.cArtNr,
  lw.LetztesAusgangsdatum
ORDER BY a.cArtNr ASC;
 

Hematek-Solutions

Gut bekanntes Mitglied
26. März 2012
182
19
Paderborn
Firma
Hematek GmbH
Hi,

das Problem liegt daran, dass du mit deinem JOIN auf die letzte Buchung automatisch alle Artikel ausschließt, die noch nie einen Warenausgang hatten. Dadurch verschwinden die „Penner“ komplett aus der Ergebnisliste.

Du kannst das ganz einfach lösen, indem du von tArtikel ausgehst und einen LEFT JOIN auf die letzten Warenausgänge machst. Zusätzlich kannst du dir auch die erste bekannte Bewegung holen, um einen zeitlichen Bezug zu haben.

Hier ein Beispiel, das alle Artikel anzeigt – inklusive der nie verkauften – und zusätzlich ein Flag [Nie verkauft] mitliefert:



SQL:
WITH LetzterWarenausgang AS (
    SELECT
        ah.kArtikel,
        MAX(ah.dGebucht) AS LetztesAusgangsdatum
    FROM tArtikelHistory AS ah
    WHERE ah.kBuchungsart = 20   -- Warenausgang
    GROUP BY ah.kArtikel
),
ErsteBewegung AS (
    SELECT
        ah.kArtikel,
        MIN(ah.dGebucht) AS ErsteBuchung        -- erste bekannte Buchung (egal ob Zugang/Abgang)
    FROM tArtikelHistory AS ah
    GROUP BY ah.kArtikel
)
SELECT
    a.kArtikel,
    a.cArtNr                                       AS [Artikelnr],
    MAX(ab.cName)                                  AS [Artikelbeschreibung],   -- DE (kSprache=1)
    lw.LetztesAusgangsdatum                        AS [Letzter Warenausgang],
    CASE
        WHEN lw.LetztesAusgangsdatum IS NULL THEN NULL
        ELSE DATEDIFF(DAY, lw.LetztesAusgangsdatum, GETDATE())
    END                                            AS [Tage seit letztem Warenausgang],
    eb.ErsteBuchung                                AS [Erste Bewegung],
    CASE
        WHEN eb.ErsteBuchung IS NULL THEN NULL
        ELSE DATEDIFF(DAY, eb.ErsteBuchung, GETDATE())
    END                                            AS [Tage seit erster Bewegung],
    CASE WHEN lw.kArtikel IS NULL THEN 1 ELSE 0 END AS [Nie verkauft]          -- 1 = Penner
FROM tArtikel a
LEFT JOIN LetzterWarenausgang lw
       ON lw.kArtikel = a.kArtikel
LEFT JOIN ErsteBewegung eb
       ON eb.kArtikel = a.kArtikel
LEFT JOIN tArtikelBeschreibung ab
       ON ab.kArtikel = a.kArtikel
      AND ab.kSprache = 1
GROUP BY
    a.kArtikel, a.cArtNr,
    lw.LetztesAusgangsdatum, lw.kArtikel,
    eb.ErsteBuchung
ORDER BY
    [Nie verkauft] DESC,                            -- Penner zuerst
    [Tage seit letztem Warenausgang] DESC,
    a.cArtNr ASC;
 
  • Gefällt mir
Reaktionen: arich001

arich001

Sehr aktives Mitglied
21. April 2021
285
35
Hi,

das Problem liegt daran, dass du mit deinem JOIN auf die letzte Buchung automatisch alle Artikel ausschließt, die noch nie einen Warenausgang hatten. Dadurch verschwinden die „Penner“ komplett aus der Ergebnisliste.

Du kannst das ganz einfach lösen, indem du von tArtikel ausgehst und einen LEFT JOIN auf die letzten Warenausgänge machst. Zusätzlich kannst du dir auch die erste bekannte Bewegung holen, um einen zeitlichen Bezug zu haben.

Hier ein Beispiel, das alle Artikel anzeigt – inklusive der nie verkauften – und zusätzlich ein Flag [Nie verkauft] mitliefert:



SQL:
WITH LetzterWarenausgang AS (
    SELECT
        ah.kArtikel,
        MAX(ah.dGebucht) AS LetztesAusgangsdatum
    FROM tArtikelHistory AS ah
    WHERE ah.kBuchungsart = 20   -- Warenausgang
    GROUP BY ah.kArtikel
),
ErsteBewegung AS (
    SELECT
        ah.kArtikel,
        MIN(ah.dGebucht) AS ErsteBuchung        -- erste bekannte Buchung (egal ob Zugang/Abgang)
    FROM tArtikelHistory AS ah
    GROUP BY ah.kArtikel
)
SELECT
    a.kArtikel,
    a.cArtNr                                       AS [Artikelnr],
    MAX(ab.cName)                                  AS [Artikelbeschreibung],   -- DE (kSprache=1)
    lw.LetztesAusgangsdatum                        AS [Letzter Warenausgang],
    CASE
        WHEN lw.LetztesAusgangsdatum IS NULL THEN NULL
        ELSE DATEDIFF(DAY, lw.LetztesAusgangsdatum, GETDATE())
    END                                            AS [Tage seit letztem Warenausgang],
    eb.ErsteBuchung                                AS [Erste Bewegung],
    CASE
        WHEN eb.ErsteBuchung IS NULL THEN NULL
        ELSE DATEDIFF(DAY, eb.ErsteBuchung, GETDATE())
    END                                            AS [Tage seit erster Bewegung],
    CASE WHEN lw.kArtikel IS NULL THEN 1 ELSE 0 END AS [Nie verkauft]          -- 1 = Penner
FROM tArtikel a
LEFT JOIN LetzterWarenausgang lw
       ON lw.kArtikel = a.kArtikel
LEFT JOIN ErsteBewegung eb
       ON eb.kArtikel = a.kArtikel
LEFT JOIN tArtikelBeschreibung ab
       ON ab.kArtikel = a.kArtikel
      AND ab.kSprache = 1
GROUP BY
    a.kArtikel, a.cArtNr,
    lw.LetztesAusgangsdatum, lw.kArtikel,
    eb.ErsteBuchung
ORDER BY
    [Nie verkauft] DESC,                            -- Penner zuerst
    [Tage seit letztem Warenausgang] DESC,
    a.cArtNr ASC;
Danke, leider werden jetzt alle jemals verkauften Artikel ausgegeben, auch die die über die Kassen oder Großhandel gingen.
Mein ursprünglicher Ansatz über kPlattform hat leider nicht wirklich fehlerfrei funktioniert.
 

Hematek-Solutions

Gut bekanntes Mitglied
26. März 2012
182
19
Paderborn
Firma
Hematek GmbH
Danke, leider werden jetzt alle jemals verkauften Artikel ausgegeben, auch die die über die Kassen oder Großhandel gingen.
Mein ursprünglicher Ansatz über kPlattform hat leider nicht wirklich fehlerfrei funktioniert.

Kurzlösung: Erst die Plattform-IDs (nPlattform) herausfinden, dann die eigentliche Abfrage mit genau diesen IDs laufen lassen. So bekommst du alle Artikel inkl. derer, die nie über Shop/Amazon/eBay usw. verkauft wurden.

SQL:
SELECT nPlattform, cName
FROM tPlattform
ORDER BY cName;

Ersetze im IN (...) die Platzhalter durch die IDs aus Schritt 1 (z. B. IN (2, 31, 51)).


SQL:
-- Letzter Marktplatz-Verkauf je Artikel (nur die ausgewählten Plattformen)
WITH LetzterMPVerkauf AS (
    SELECT
        bp.tArtikel_kArtikel               AS kArtikel,
        MAX(b.dErstellt)                   AS LetzterMPVerkauf
    FROM tBestellung b
    JOIN tBestellpos bp
         ON bp.tBestellung_kBestellung = b.kBestellung
    JOIN tPlattform p
         ON p.nPlattform = b.nPlatform
    WHERE p.nPlattform IN ( /* <-- HIER DEINE IDs: z.B. 2, 31, 51 */ )
      AND bp.tArtikel_kArtikel IS NOT NULL      -- nur echte Artikelpositionen
      AND ISNULL(b.nStorno, 0) = 0              -- Stornos raus
      -- Optional: nur Warenpositionen (falls bei dir 0 = Artikel):
      -- AND bp.nType = 0
    GROUP BY bp.tArtikel_kArtikel
)
SELECT
    a.kArtikel,
    a.cArtNr                                 AS [Artikelnr],
    MAX(ab.cName)                            AS [Artikelbeschreibung],
    lm.LetzterMPVerkauf                      AS [Letzter MP-Verkauf],
    CASE WHEN lm.LetzterMPVerkauf IS NULL THEN 1 ELSE 0 END AS [Nie auf MP verkauft],
    CASE WHEN lm.LetzterMPVerkauf IS NULL THEN NULL
         ELSE DATEDIFF(DAY, lm.LetzterMPVerkauf, GETDATE()) END AS [Tage seit letztem MP-Verkauf]
FROM tArtikel a
LEFT JOIN LetzterMPVerkauf lm
       ON lm.kArtikel = a.kArtikel
LEFT JOIN tArtikelBeschreibung ab
       ON ab.kArtikel = a.kArtikel AND ab.kSprache = 1
-- Optional: nur aktive, keine Variationsväter:
-- WHERE a.cAktiv = 'Y' AND a.nIstVater = 0
GROUP BY a.kArtikel, a.cArtNr, lm.LetzterMPVerkauf
ORDER BY
    [Nie auf MP verkauft] DESC,
    [Tage seit letztem MP-Verkauf] DESC,
    a.cArtNr ASC;
 
  • Gefällt mir
Reaktionen: arich001
Ähnliche Themen
Titel Forum Antworten Datum
Neu Welche SQL Server Version für WaWi 1.0.0.0.0 unter Windows 11 Installation von JTL-Wawi 6
Neu SQL Code für GPSR Felder (Kaufland) zeigt Fehler + wird daher nicht übertragen kaufland.de - Anbindung (SCX) 0
Neu Bilder von Kinderartikeln auf Vaterartikel kopieren via SQL Eigene Übersichten in der JTL-Wawi 2
Neu Täglich SQL Backup vom Shop Allgemeine Fragen zu JTL-Shop 2
Kann ich mit dieser SQL Version die neue WaWi 1.11.1 installieren? JTL-Wawi 1.11 2
Neu Kundengruppe per SQL löschen User helfen Usern - Fragen zu JTL-Wawi 3
Neu Sql Express 2022 - wawi sagt beim Start es ist ein Update bereit - gelöst Installation von JTL-Wawi 3
Neu Extern erstelltes SQL - Angebot falsche Werte User helfen Usern - Fragen zu JTL-Wawi 3
Neu In welcher SQL Tabelle finde ich den Ansprechpartner des Herstellers? User helfen Usern - Fragen zu JTL-Wawi 2
Neu Seriennummern und SQL Abfragen User helfen Usern - Fragen zu JTL-Wawi 1
Update SQL Server Management Studio JTL-Wawi 1.10 1
Neu Einrichtung SQL in neuem Rechner funktioniert nicht Installation von JTL-Wawi 3
Neu Update von 1.5.55.5 auf aktuell, welche Reihenfolge, SQL Express auf Standard Installation von JTL-Wawi 10
Neu PayPal - PayPal Checkout - 221 – SQL Fehler Plugins für JTL-Shop 0
Temu Gutschein Code (ALB496107) für 20€ & 40% Rabatt - Kombi-Deal! Shopify-Connector 0
Verwiesen an Servicepartner Temu Rabattcode (ALB496107) für Neukunden: Jetzt 90% sparen! JTL-ShippingLabels - Fehler und Bugs 0
Neu Aktuelle Temu Gutscheincode (ALB496107) für 60€ Rabatt sichern Arbeitsabläufe in JTL-Wawi 0
Neu Neuer Server für kleines Unternehmen User helfen Usern - Fragen zu JTL-Wawi 4
Neu Was ist die korrekte Variable für die letzte Seite eines Artikellistings? Betrieb / Pflege von JTL-Shop 6
Neu Open-Source-Lösung für produzierende Betriebe User helfen Usern 0
Neu Varianten Artikel erstellen mit Lister 2.0 nur für Amazon Amazon-Lister - Ideen, Lob und Kritik 0
Neu SUCHE Freelancer für JTL WAWI Anbindung an WooCommerce und Einrichtung Dienstleistung, Jobs und Ähnliches 2
Amazon-ASIN mit mehreren SKU für Chargenverfolgung JTL-Wawi 1.10 0
Neu ID Hook für Warenkrob User helfen Usern 0
Neu Platzhalter für GPSR werden mit angezeigt PrestaShop-Connector 1
Neu Workflow für voraussichtlichen Liefertag erstellen JTL-Workflows - Ideen, Lob und Kritik 6
Neu Workflow für voraussichtlichen Liefertag erstellen User helfen Usern - Fragen zu JTL-Wawi 1
Neu CustomWorkflow für Pattenkonto JTL-Workflows - Ideen, Lob und Kritik 1
Neu Adressetiketten für Briefe mit Etikettendrucker erstellen / Formatierungsproblem Druck-/ E-Mail-/ Exportvorlagen in JTL-Wawi 4
Neu 🚀 Pilotkunden gesucht: HS Dynamic Pricing Plugin für JTL-Shop Plugins für JTL-Shop 0
Wichtig 💡Die Retourenplattform für Webshops – Expertise von unserem neuen Partner Returnless News, Events und Umfragen 0
Neu Kapazitäten frei für Routineaufgaben JTL Wawi Dienstleistung, Jobs und Ähnliches 0
Neu Trainingsmodus für JTL-POS gewünscht JTL-POS - Ideen, Lob und Kritik 0
Artikel teilweise nicht für Verkaufskanäle aktivierbar JTL-Wawi 1.10 0
Neu VCS lite: Arithmetischer Überlauffehler für tinyint-Datentyp, Wert = -1. Amazon-Anbindung - Fehler und Bugs 0
Monatsweise Warenbewegungen für alle Artikel exportieren JTL-Wawi 1.10 1
WF - automatisches Aktivieren / Deaktivieren für Verkaufskanal Shop JTL-Wawi 1.9 6
Artikel nicht automatisch für Verkaufskanal aktivieren JTL-Wawi 1.10 2
Neu Welcher Hoster ist für JTL-Shop 5 empfehlenswert? User helfen Usern 12
Buchhaltung vollautomatisiert für die Schweiz JTL-Wawi 1.10 9
Vote für debugging des Mobile Server Fehlers JTL-Wawi 1.11 1
Massenänderung "Lagerplatz" für Artikel bei WMS Lager JTL-Wawi 1.10 2
Neu Bestellobergrenze (999€) für Schweizer Kunden im Shop hinterlegen Betrieb / Pflege von JTL-Shop 1
Alternativtext für Artikelbilder per Ameise pro Plattform setzen JTL-Wawi 1.10 0
Neu Staffelpreise für Verpackungseinheiten Einrichtung von JTL-Shop4 4
Neu Kunden einen Retouren QR Code beim ausliefern mitschicken für Warenankauf ??? JTL-ShippingLabels - Fehler und Bugs 0
Neu Suche Freelancer für Aufsetzen JTL B2B Shop Dienstleistung, Jobs und Ähnliches 3
Gelöst Kartenleser für RKSV JTL-POS - Fragen zu Hardware 2
Neu Artikel nur für Admin sichtbar Allgemeine Fragen zu JTL-Shop 2
Neu Zusätzlicher Kundendisplay für Kassensystem iMin D4 Pro Einrichtung / Updates von JTL-POS 1

Ähnliche Themen