Neu Statistik über noch nie verkaufte Artikel

andiarbeit

Sehr aktives Mitglied
17. Juni 2018
330
94
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.420
1.870
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.121
610
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
3.856
916
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.121
610
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
330
94

MrM

Mitglied
13. Oktober 2023
17
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.121
610
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
2
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
Statistik über Zahlungsmoral der Kunden / Zahlungsverzug möglich? JTL-Wawi 1.9 4
Gewinn wird in Statistik nicht angezeigt JTL-Wawi 1.10 3
Statistik nicht gleiches Ergebnis wie Ameise JTL-Wawi 1.10 4
Statistik - Berücksichtigung Rechnungskorrekturen JTL-Wawi 1.9 0
VCS Lite Rechnungen in Statistik mit auswerten JTL-Wawi 1.10 3
Über 100 Bestellungen von SCX nicht importiert kaufland.de - Anbindung (SCX) 0
Neu Probleme mit der Email über jtl hosting (plesk) User helfen Usern 2
Neu Fehlermeldungen beim Hochladen von Artikel über Amazon Lister 2.0 Amazon-Lister - Fehler und Bugs 0
Neu Registrierung über amazonpay nicht möglich Plugins für JTL-Shop 0
Merkmalfilter als Leiste über Artikelliste möglich??? Einrichtung JTL-Shop5 3
Neu Kein CN22 über DHL JTL-ShippingLabels - Fehler und Bugs 4
Defekt-Artikel nach Retoure über WMS nicht mehr in JTL-Wawi sichtbar JTL-Wawi 1.10 2
In Bearbeitung Kompakte Kasse gesucht mit der auch Kartenzahlung über 50 € funktioniert? JTL-POS - Fragen zu Hardware 4
Neu Zahlungsimport über CSV ... Ausgangszahlung ? JTL-Wawi - Fehler und Bugs 0
Datenbank ist über 800gb groß Hilfe !!! JTL-Wawi 1.9 23
Neu Hat jemand Erfahrung mit der Anbindung von TikTok Shop über Shopify? Einrichtung und Installation von JTL-eazyAuction 0
Artikel ändert über Nacht den Preis JTL-Wawi 1.10 3
Neu Einkaufspreis bei Ameise-Import über "Lagerbestände" ergänzen JTL-Ameise - Ideen, Lob und Kritik 9
Neu Amazon Lister 2.0 - Status auf "Wartet auf Hochladen" seit über einer Woche Amazon-Lister - Fehler und Bugs 7
Export aller Kunden mit über xxx € Umsatz in xxx Tagen JTL-Wawi 1.10 15
Rechnungsdatenübertragung an Datev über Daten Rechnungsdatenservice 2.0 funktioniert nicht JTL-Wawi 1.9 0
Neu Betreff: CMD-Import überspringt Artikel bei Bestandsüberschreibung - Über den GUI-Import keine Probleme JTL-Ameise - Fehler und Bugs 2
Neu feinere WMS Rechte über Benutzergruppen für gängige WMS Vorgänge JTL-WMS / JTL-Packtisch+ - Ideen, Lob und Kritik 0
Neu Verkäufe von Stücklistenartikel über FBA werden im Lager nicht abgezogen Amazon-Anbindung - Fehler und Bugs 0
Beantwortet Workflow Auftrag über FFN ausliefern wenn Ware eingelagert JTL-Workflows - Ideen, Lob und Kritik 6
Neu Retourenlabel für DHL Selbstzahler über Retouren erstellen geht nicht JTL-ShippingLabels - Fehler und Bugs 0
Neu Bilder über Amazon-Lister 2.0 lassen sich nicht dauerhaft ändern Amazon-Lister - Fehler und Bugs 0
Neu Mehrere Bankverbindungen bei Nachnahme über DHL Versenden 3.0 User helfen Usern - Fragen zu JTL-Wawi 2
Export WaWi Daten von EcomData über BackUp Funktion - Wiedereinspielen am PC JTL-Wawi 1.10 7
Neu WF Kunde über Weiterleitung in Filiale benachrichtigen User helfen Usern - Fragen zu JTL-Wawi 2
Neu SQL für noch nie Verkaufte Artikel auf Marktplätzen. User helfen Usern - Fragen zu JTL-Wawi 3
Neu Unicorn2 - Marcos Software Internetseite alle weg? Läuft das Projekt noch? Schnittstellen Import / Export 4
Neu Shopify Basic mit JTL? Wie einrichten? Ist der JTL Guide noch aktuelle wegen PII Einschränkung? Shopify-Connector 2
Neu Kann nach Update auf 1.10 meine alten VCS-Lite Amazonrechnungen (noch erstellt mit 1.9.4.5.) nicht mehr drucken? Amazon-Anbindung - Fehler und Bugs 4
Neu iMin D4 Pro noch mit Android 13 - EOL August 2025 - Update? JTL-POS - Fragen zu Hardware 0
Neu Bestand und Preisanbgleich Lister 1.0 nach 31.07.25 noch möglich Amazon-Lister - Ideen, Lob und Kritik 1
Neu Rundungsfehler im Warenkorb (schon wieder, oder besser: immer noch!) JTL-Shop - Fehler und Bugs 3

Ähnliche Themen