Neu Statistik über noch nie verkaufte Artikel

andiarbeit

Sehr aktives Mitglied
17. Juni 2018
342
98
Nein, bei mir gehts nur darum eine Kategorie (mit Unterkategorien) mit Werkstatt-Tätigkeiten auszuschließen. Die verwässert mir sonst die restliche Auswertung.
 

MichaelH

Sehr aktives Mitglied
17. November 2008
14.631
1.965
Statistiken würde ich immer über Warengruppen machen und nie über Kategorien, denn man kann Artikel gar nicht fix 1 Kategorie zuordnen, sofern der Artikel in mehreren Kategorien vorkommt - und das kann irgendwann die Statistik verfälschen.
 

frankell

Sehr aktives Mitglied
9. September 2019
2.647
825
Flensburg
In der Tat wäre es am besten, auf die Warengruppe abzustellen. Ginge das auch?

Ich habe zwar auch den notwendigen rekursiven Code parat, aber der macht die Abfrage schätzungsweise dreimal so lang und damit deutlich weniger selbsterklärend (und auch deutlich weniger wartungsfreundlich).
 

John

Sehr aktives Mitglied
3. März 2012
4.064
1.022
Berlin
Jo, Kategorien sind schmerzhaft, auch weil sich kKategorie nicht ändert, wenn man sie später verschiebt.
Besser Warengruppen...
 

frankell

Sehr aktives Mitglied
9. September 2019
2.647
825
Flensburg
In der Tat wäre es am besten, auf die Warengruppe abzustellen. Ginge das auch?

Ich habe zwar auch den notwendigen rekursiven Code parat, aber der macht die Abfrage schätzungsweise dreimal so lang und damit deutlich weniger selbsterklärend (und auch deutlich weniger wartungsfreundlich).
@andiarbeit, Frage ging an Dich. :)
Vielleicht unterscheiden sich die Artikel in der betreffenden Wurzelkategorie, dass sie eine eigene Warengruppe bekommen können.
Wie gesagt, nach Wurzelkategorie zu filtern ist auch möglich, aber weniger ratsam.
 

andiarbeit

Sehr aktives Mitglied
17. Juni 2018
342
98

MrM

Aktives Mitglied
13. Oktober 2023
18
4
@frankell Meine Warengruppen wären ganz ordentlich gepflegt. Ich müsste dann nur eine Warengruppe ausschließen. Wie würde das gehen?
SQL:
SELECT

Artikel.cArtNr Artikelnummer

,Artikel.cName Artikelname

,ISNULL (tWarengruppe.cName,'Warengrp leer') AS Warengruppe

FROM vStandardArtikel Artikel

LEFT JOIN tWarengruppe

    ON tWarengruppe.kWarengruppe = Artikel.kWarengruppe

WHERE

--Nur Aktive Artikel

Artikel.cAktiv ='Y'

--Ausgeschlossene Warengruppen

AND tWarengruppe.cName NOT IN ('Gruppe1','Gruppe2')

-- Nur Artikel wo kein Auftrag vorhanden der komplett geliefert ist

AND NOT EXISTS(SELECT 1 FROM Verkauf.tAuftragPosition tAuftragPosition

    JOIN Verkauf.tAuftrag tAuftrag

        ON tAuftrag.kAuftrag = tAuftragPosition.kAuftrag

    WHERE tAuftragPosition.kArtikel=Artikel.kArtikel

    AND tAuftrag.nKomplettAusgeliefert=1)

Eigene Übersicht ist eigentlich nicht das ganz richtig Werkzeug, weil die Abfrage bei jedem Artikel klick passiert was Leistung schluckt. Aber wenn keine anderen Datenbank bzw Berichts Tools im Zugriff dann ist es besser als nichts.
 

frankell

Sehr aktives Mitglied
9. September 2019
2.647
825
Flensburg
@frankell Meine Warengruppen wären ganz ordentlich gepflegt. Ich müsste dann nur eine Warengruppe ausschließen. Wie würde das gehen?
Das ginge dann so:

SQL:
SELECT
    ART.cArtNr,
    ART.cName,
    0 AS QTY
FROM vStandardArtikel AS ART
LEFT JOIN Verkauf.tAuftragPosition AS AP ON ART.kArtikel = AP.kArtikel
LEFT JOIN Verkauf.tAuftrag AS A ON AP.kAuftrag = A.kAuftrag
WHERE ART.kWarengruppe <> (SELECT kWarengruppe FROM tWarengruppe WHERE cName = '[Name Warengruppe]'
GROUP BY ART.cArtNr, ART.cName
HAVING SUM(CASE WHEN CAST(A.dErstellt AS DATE) > '2022-12-31' THEN 1 ELSE 0 END) = 0
ORDER BY ART.cName ASC;

Du müsstest nur [Name Warengruppe] durch den Namen dieser einen Warengruppe ersetzen.
 

RecamboSL

Aktives Mitglied
24. Mai 2023
4
0
Mann kann auch das nutzen. Habe selber codiert.

/*
Artikel mit Lagerbestand,
die entweder nie verkauft wurden
oder deren letzter Verkauf vor @DatumVerkauf liegt,
und deren erster Lagerzugang vor @DatumLager liegt.
Mit aktuellem Lagerplatz (aus vWarenlagerPlatzArtikel + tWarenLagerPlatz).
JTL-Wawi 1.10.x
*/

DECLARE @DatumVerkauf DATE = '2025-03-01'; -- Grenze für Letzter Verkauf (hier manuell Datum einsetzen)
DECLARE @DatumLager DATE = '2025-01-01'; -- Grenze für Erster Lagerzugang (hier manuell Datum einsetzen)

WITH CTE_Bestand AS (
SELECT
we.kArtikel,
MIN(TRY_CONVERT(DATE,we.dErstellt)) AS ErsteLagerung, -- ältester Lagerzugang
SUM(we.fAnzahl - ISNULL(wo.fAnzahl,0)) AS AktuellerBestand
FROM dbo.tWarenLagerEingang AS we
LEFT JOIN (
SELECT
kWarenLagerEingang,
SUM(fAnzahl) AS fAnzahl
FROM dbo.tWarenLagerAusgang
GROUP BY kWarenLagerEingang
) AS wo ON we.kWarenLagerEingang = wo.kWarenLagerEingang
WHERE TRY_CONVERT(DATE,we.dErstellt) IS NOT NULL
AND TRY_CONVERT(DATE,we.dErstellt) <= GETDATE() -- keine zukünftigen Daten
GROUP BY we.kArtikel
),

CTE_LetzterVerkauf AS (
SELECT
ap.kArtikel,
MAX(TRY_CONVERT(DATE,a.dErstellt)) AS LetzterVerkauf
FROM Verkauf.tAuftragPosition AS ap
JOIN Verkauf.tAuftrag AS a ON ap.kAuftrag = a.kAuftrag
WHERE TRY_CONVERT(DATE,a.dErstellt) IS NOT NULL
GROUP BY ap.kArtikel
),

-- aktueller Lagerplatz mit Bestand > 0 (aus vWarenlagerPlatzArtikel + tWarenLagerPlatz)
CTE_AktuellerLagerplatz AS (
SELECT
v.kArtikel,
lp.cName AS Lagerplatz,
ROW_NUMBER() OVER(PARTITION BY v.kArtikel ORDER BY v.fAnzahl DESC) AS rn
FROM dbo.vWarenlagerPlatzArtikel AS v
JOIN dbo.tWarenLagerPlatz AS lp ON v.kWarenLagerPlatz = lp.kWarenLagerPlatz
WHERE v.fAnzahl > 0
)

SELECT
a.cArtNr AS [Artikelnummer],
ab.cName AS [Artikelbezeichnung],
CAST(s.AktuellerBestand AS int) AS [Bestand],
s.ErsteLagerung AS [Erster Lagerzugang],
ISNULL(CONVERT(varchar(10),v2.LetzterVerkauf,104),'Nie verkauft') AS [Letzter Verkauf],
al.Lagerplatz AS [Aktueller Lagerplatz]
FROM dbo.tArtikel AS a
JOIN dbo.tSpracheUsed AS sp
ON sp.nStandard = 1
JOIN dbo.tArtikelBeschreibung AS ab
ON a.kArtikel = ab.kArtikel
AND ab.kSprache = sp.kSprache
AND ab.kPlattform = 1
JOIN CTE_Bestand AS s
ON a.kArtikel = s.kArtikel
LEFT JOIN CTE_LetzterVerkauf AS v2
ON a.kArtikel = v2.kArtikel
LEFT JOIN CTE_AktuellerLagerplatz AS al
ON a.kArtikel = al.kArtikel AND al.rn = 1 -- nur der erste Lagerplatz (höchster Bestand)
WHERE
s.AktuellerBestand > 0 -- Bestand vorhanden
AND (v2.LetzterVerkauf IS NULL OR v2.LetzterVerkauf < @DatumVerkauf) -- nie verkauft ODER letzter Verkauf vor @DatumVerkauf
AND s.ErsteLagerung < @DatumLager -- Lagerzugang vor @DatumLager
ORDER BY v2.LetzterVerkauf;
 
Ähnliche Themen
Titel Forum Antworten Datum
Neu Besucher und Kampagnen Statistik Konfiguration Betrieb / Pflege von JTL-Shop 0
Problem beim Import über Ameise/eBay JTL-Wawi 1.11 1
Neu Nach Update auf 1.11.10.0 Abgleich zu Ebay über 3 Stunden bei neuen Angeboten eBay-Anbindung - Fehler und Bugs 2
Neu Nach Update auf 1.11.10 klappt stornieren über ios Wawi App nicht mehr JTL-Workflows - Fehler und Bugs 0
Dropshipping-Labeldruck beim Lieferanten über JTL-Wawi (Versandstandorte / Workflows) JTL-Wawi 1.10 0
Workflow Trigger bei Angebot-Import über Ameise JTL-Wawi 1.9 0
Neu Etikettendruck über Remotedesktop Fehler Arbeitsabläufe in JTL-Wawi 0
Neu JTL Shipping Fehler bei DHL Versand über WMS ? User helfen Usern - Fragen zu JTL-Wawi 2
Neu Kundenkonto über Mein-Konto nicht möglich JTL-Shop - Fehler und Bugs 4
Neu Weitere Marktplätze über Sellercentral international Listing Amazon-Anbindung - Fehler und Bugs 1
Kunde kauft über Amazon und dann über Ebay - Mailversand JTL-Wawi 1.10 10
Neu Teillieferung nur mit Rechnung über ganzen Auftrag oder ohne Rückstandsmeldung möglich Arbeitsabläufe in JTL-WMS / JTL-Packtisch+ 1
Neu Artikel Rücknahme über Kassenbon von letzter Woche in JTL-Pos JTL-POS - Ideen, Lob und Kritik 2
Neu Amazon Abgleich - seit heute 12:26Uhr keine Übernahme der Bestellungen über Worker Amazon-Anbindung - Fehler und Bugs 9
Neu welche Sync Benutzer Daten in Shop und WAWI bei neu-Hosting über JTL Allgemeine Fragen zu JTL-Shop 0
Neu PrestaShop 9 Kompatibilität des Connectors – seit über 8 Monaten keine Lösung PrestaShop-Connector 0
welche Sync Benutzer Daten in Shop und WAWI bei neu-Hosting über JTL JTL-Wawi 1.11 0
Neu Angeblich noch keine Verknüpfung mit DPD Meta ??? JTL-ShippingLabels - Fehler und Bugs 1
Wareneingang Hinweisfeld (immer noch) ohne Funktion JTL-Wawi 2.0 0
Neu Falsche Berechnung der Kassen im Kundencenter - Multikasse noch aktiv Smalltalk 2
Neu HTTP 500 auf /Kontakt – Route scheint intern noch zu existieren, JTL-Weiterleitung greift nicht Betrieb / Pflege von JTL-Shop 0
Macht es noch Sinn, auf dem Marktplatz OTTO zu verkaufen? Otto.de - Anbindung (SCX) 7
Aktuelles Update 1.11.7: Anmeldedialog merkt sich den letzten User immer noch nicht & falsche Warnung für angeblich fehlendes SQL Server Update JTL-Wawi 1.11 3

Ähnliche Themen