Neu Eigene Übersichten Wawi Stürzt ab SQL für Komplexe Artikel-KPIs

das-ding

Aktives Mitglied
30. August 2019
47
4
Wenn ich die eigene Übersicht wie auf der Seite JTL Guide in meine 1.7. einfüge stürzt die wawi komplett ab.


-- wenn Vaterartikel, dann ganz oben auch die gesamtsumme aller kinder
-- ergänzen um Abverkaufsquote (verkaufte Teile / (verkaufte Teile + Lagerbestand

-- wenn Stückliste, dann alle Komponenten anzeigen und ganz oben die Gesamtsumme der Kinder
-- Wenn Std Artikel, dann auch anzeigen
-- (wenn komponente von SL -> Dann alle SLs auch anzeigen)
--


-- Vaterartikel bei Varkombis
SELECT
'Vater (kumuliert)' AS 'Artikeltyp',
jArtikel.cArtNr AS ArtNr,
CONCAT('(Vater kumuliert) ', jArtikel.cName) AS Artikelname,
ROUND(CONVERT(FLOAT, SUM(vLagerbestandEx.fVerfuegbar)), 2) AS 'Verfügbar',
ROUND(CONVERT(FLOAT, SUM(vLagerbestandEx.fZulauf)), 2) AS 'Zulauf',
CASE
WHEN ISNULL(SUM(jLetzte365Tage.absatz), 0) > 0 THEN CONCAT(ROUND(CONVERT(FLOAT, SUM(vLagerbestandEx.fVerfuegbar) / (ISNULL(SUM(jLetzte365Tage.absatz), 0) / 365)), 1), ' Tage')
ELSE 'unendlich'
END AS 'Lagerreichweite',
ISNULL(SUM(jLetzte30Tage.absatz), 0) AS 'Absatz 30 Tage',
ISNULL(SUM(jLetzte90Tage.absatz), 0) AS 'Abs. 90 Tage',
ISNULL(SUM(jLetzte365Tage.absatz), 0) AS 'Abs. 365 Tage',
ISNULL(SUM(jAbsatzGesamt.absatz), 0) AS 'Abs. Gesamt',
ISNULL(AVG(jVKDurchschnitt.vk), 0) AS 'Ø VK-Brutto',
CONCAT(ROUND(CONVERT(FLOAT, (ISNULL(AVG(jRetourenGesamt.Retourenquote), 0))), 1), '%') AS 'Retourenquote',
CASE
WHEN ISNULL(SUM(jLetzte30Tage.absatz), 0) > 0 OR SUM(vLagerbestandEx.fVerfuegbar) > 0 THEN CONCAT(ROUND(CONVERT(FLOAT, (ISNULL(SUM(jLetzte30Tage.absatz), 0) / (SUM(vLagerbestandEx.fVerfuegbar) + ISNULL(SUM(jLetzte30Tage.absatz), 0)) * 100)), 1), '%')
ELSE '-'
END AS 'Abverkaufsquote (Monat)'
FROM tartikel
JOIN
(SELECT tartikel.kArtikel, cArtNr, tArtikelBeschreibung.cName
FROM tartikel
JOIN dbo.tSpracheUsed ON nStandard = 1
JOIN dbo.tArtikelBeschreibung ON tArtikelBeschreibung.kArtikel = tartikel.kArtikel
AND tArtikelBeschreibung.kSprache = tSpracheUsed.kSprache
AND tArtikelBeschreibung.kPlattform=1
WHERE tartikel.kArtikel = @Key
) AS jArtikel ON jArtikel.kArtikel = @Key
JOIN vLagerbestandEx ON vLagerbestandEx.kArtikel = tartikel.kArtikel
LEFT JOIN (
SELECT tArtikel_kArtikel, ROUND(CONVERT(FLOAT, ISNULL(SUM(tbestellpos.nAnzahl), 0.0)), 2) AS absatz
FROM tbestellung
JOIN tbestellpos ON tbestellpos.tBestellung_kBestellung = tBestellung.kBestellung
WHERE tBestellung.nStorno = 0 -- Stornierte Aufträge nicht beachten
AND tbestellung.cType = 'B'
AND tBestellung.dErstellt > DATEADD(DAY, -30, getdate())
GROUP BY tArtikel_kArtikel
) AS jLetzte30Tage ON jLetzte30Tage.tArtikel_kArtikel = tartikel.kArtikel
LEFT JOIN (
SELECT tArtikel_kArtikel, ROUND(CONVERT(FLOAT, ISNULL(SUM(tbestellpos.nAnzahl), 0.0)), 2) AS absatz
FROM tbestellung
JOIN tbestellpos ON tbestellpos.tBestellung_kBestellung = tBestellung.kBestellung
WHERE tBestellung.nStorno = 0 -- Stornierte Aufträge nicht beachten
AND tbestellung.cType = 'B'
AND tBestellung.dErstellt > DATEADD(DAY, -90, getdate())
GROUP BY tArtikel_kArtikel
) AS jLetzte90Tage ON jLetzte90Tage.tArtikel_kArtikel = tartikel.kArtikel
LEFT JOIN (
SELECT tArtikel_kArtikel, ROUND(CONVERT(FLOAT, ISNULL(SUM(tbestellpos.nAnzahl), 0.0)), 2) AS absatz
FROM tbestellung
JOIN tbestellpos ON tbestellpos.tBestellung_kBestellung = tBestellung.kBestellung
WHERE tBestellung.nStorno = 0 -- Stornierte Aufträge nicht beachten
AND tbestellung.cType = 'B'
AND tBestellung.dErstellt > DATEADD(DAY, -365, getdate())
GROUP BY tArtikel_kArtikel
) AS jLetzte365Tage ON jLetzte365Tage.tArtikel_kArtikel = tartikel.kArtikel
LEFT JOIN (
SELECT tArtikel_kArtikel, ROUND(CONVERT(FLOAT, ISNULL(SUM(tbestellpos.nAnzahl), 0.0)), 2) AS absatz
FROM tbestellung
JOIN tbestellpos ON tbestellpos.tBestellung_kBestellung = tBestellung.kBestellung
WHERE tBestellung.nStorno = 0 -- Stornierte Aufträge nicht beachten
AND tbestellung.cType = 'B'
GROUP BY tArtikel_kArtikel
) AS jAbsatzGesamt ON jAbsatzGesamt.tArtikel_kArtikel = tartikel.kArtikel
LEFT JOIN (
SELECT tArtikel_kArtikel, ROUND(CONVERT(FLOAT, ISNULL(AVG(tbestellpos.fVKPreis), 0.0)), 2) AS vk
FROM tbestellpos
JOIN tBestellung ON tbestellpos.tBestellung_kBestellung = tBestellung.kBestellung
WHERE tBestellung.nStorno = 0 -- Stornierte Aufträge nicht beachten
AND tbestellung.cType = 'B'
GROUP BY tArtikel_kArtikel
) AS jVKDurchschnitt ON jVKDurchschnitt.tArtikel_kArtikel = tartikel.kArtikel
LEFT JOIN (
SELECT jabsatzgesamt.tArtikel_kArtikel,
(ISNULL(retourengesamt.rm, 0.0)/jabsatzgesamt.absatz)*100 as Retourenquote
FROM
(SELECT tArtikel_kArtikel,
ROUND(CONVERT(FLOAT, ISNULL(SUM(tbestellpos.nAnzahl), 0.0)), 2) AS absatz
FROM tbestellung
JOIN tbestellpos ON tbestellpos.tBestellung_kBestellung = tBestellung.kBestellung
WHERE tbestellung.cType = 'B'
AND tBestellung.nStorno = 0 -- Stornierte Aufträge nicht beachten
GROUP BY tArtikel_kArtikel) AS jabsatzgesamt
LEFT JOIN
(SELECT kArtikel,
ROUND(CONVERT(FLOAT, ISNULL(SUM(tRMRetourePos.fAnzahl), 0.0)), 2) AS rm
FROM tbestellung
JOIN tRMRetoure ON tRMRetoure.kBestellung = tBestellung.kBestellung
JOIN tRMRetourePos ON tRMRetourePos.kRMRetoure = tRMRetoure.kRMRetoure
GROUP BY kArtikel) AS retourengesamt on retourengesamt.kArtikel=jabsatzgesamt.tArtikel_kArtikel)
as jRetourenGesamt on jRetourenGesamt.tArtikel_kArtikel = tartikel.kArtikel
WHERE kVaterArtikel = @Key
GROUP BY kVaterArtikel, jArtikel.cArtNr, jArtikel.cName

UNION -- Kindartikel
SELECT
'-Kindartikel' AS 'Artikeltyp',
tartikel.cArtNr AS ArtNr,
tArtikelBeschreibung.cName AS Artikelname,
ROUND(CONVERT(FLOAT, vLagerbestandEx.fVerfuegbar), 2) AS 'Verfügbar',
ROUND(CONVERT(FLOAT, vLagerbestandEx.fZulauf), 2) AS 'Zulauf',
CASE
WHEN ISNULL(jLetzte365Tage.absatz, 0) > 0 THEN CONCAT(ROUND(CONVERT(FLOAT, vLagerbestandEx.fVerfuegbar / (ISNULL(jLetzte365Tage.absatz, 0) / 365)), 1), ' Tage')
ELSE 'unendlich'
END AS 'Lagerreichweite',
ISNULL(jLetzte30Tage.absatz, 0) AS 'Absatz 30 Tage',
ISNULL(jLetzte90Tage.absatz, 0) AS 'Abs. 90 Tage',
ISNULL(jLetzte365Tage.absatz, 0) AS 'Abs. 365 Tage',
ISNULL(jAbsatzGesamt.absatz, 0) AS 'Abs. Gesamt',
ISNULL(jVKDurchschnitt.vk, 0) AS 'Ø VK-Brutto',
ISNULL(jRetourenGesamt.Retourenquote, '0%') AS 'Retourenquote',
CASE
WHEN ISNULL(jLetzte30Tage.absatz, 0) > 0 OR vLagerbestandEx.fVerfuegbar > 0 THEN CONCAT(ROUND(CONVERT(FLOAT, (ISNULL(jLetzte30Tage.absatz, 0) / (vLagerbestandEx.fVerfuegbar + ISNULL(jLetzte30Tage.absatz, 0)) * 100)), 1), '%')
ELSE '-'
END AS 'Aberkaufsquote (Monat)'
FROM tartikel
JOIN dbo.tSpracheUsed ON nStandard = 1
JOIN dbo.tArtikelBeschreibung ON tArtikelBeschreibung.kArtikel = tartikel.kArtikel
AND tArtikelBeschreibung.kSprache = tSpracheUsed.kSprache
AND tArtikelBeschreibung.kPlattform=1
JOIN vLagerbestandEx ON vLagerbestandEx.kArtikel = tartikel.kArtikel
LEFT JOIN (
SELECT tArtikel_kArtikel, ROUND(CONVERT(FLOAT, ISNULL(SUM(tbestellpos.nAnzahl), 0.0)), 2) AS absatz
FROM tbestellung
JOIN tbestellpos ON tbestellpos.tBestellung_kBestellung = tBestellung.kBestellung
WHERE tBestellung.nStorno = 0 -- Stornierte Aufträge nicht beachten
AND tbestellung.cType = 'B'
AND tBestellung.dErstellt > DATEADD(DAY, -30, getdate())
GROUP BY tArtikel_kArtikel
) AS jLetzte30Tage ON jLetzte30Tage.tArtikel_kArtikel = tartikel.kArtikel
LEFT JOIN (
SELECT tArtikel_kArtikel, ROUND(CONVERT(FLOAT, ISNULL(SUM(tbestellpos.nAnzahl), 0.0)), 2) AS absatz
FROM tbestellung
JOIN tbestellpos ON tbestellpos.tBestellung_kBestellung = tBestellung.kBestellung
WHERE tBestellung.nStorno = 0 -- Stornierte Aufträge nicht beachten
AND tbestellung.cType = 'B'
AND tBestellung.dErstellt > DATEADD(DAY, -90, getdate())
GROUP BY tArtikel_kArtikel
) AS jLetzte90Tage ON jLetzte90Tage.tArtikel_kArtikel = tartikel.kArtikel
LEFT JOIN (
SELECT tArtikel_kArtikel, ROUND(CONVERT(FLOAT, ISNULL(SUM(tbestellpos.nAnzahl), 0.0)), 2) AS absatz
FROM tbestellung
JOIN tbestellpos ON tbestellpos.tBestellung_kBestellung = tBestellung.kBestellung
WHERE tBestellung.nStorno = 0 -- Stornierte Aufträge nicht beachten
AND tbestellung.cType = 'B'
AND tBestellung.dErstellt > DATEADD(DAY, -365, getdate())
GROUP BY tArtikel_kArtikel
) AS jLetzte365Tage ON jLetzte365Tage.tArtikel_kArtikel = tartikel.kArtikel
LEFT JOIN (
SELECT tArtikel_kArtikel, ROUND(CONVERT(FLOAT, ISNULL(SUM(tbestellpos.nAnzahl), 0.0)), 2) AS absatz
FROM tbestellung
JOIN tbestellpos ON tbestellpos.tBestellung_kBestellung = tBestellung.kBestellung
WHERE tBestellung.nStorno = 0 -- Stornierte Aufträge nicht beachten
AND tbestellung.cType = 'B'
GROUP BY tArtikel_kArtikel
) AS jAbsatzGesamt ON jAbsatzGesamt.tArtikel_kArtikel = tartikel.kArtikel
LEFT JOIN (
SELECT tArtikel_kArtikel, ROUND(CONVERT(FLOAT, ISNULL(AVG(tbestellpos.fVKPreis), 0.0)), 2) AS vk
FROM tbestellpos
JOIN tBestellung ON tbestellpos.tBestellung_kBestellung = tBestellung.kBestellung
WHERE tBestellung.nStorno = 0 -- Stornierte Aufträge nicht beachten
AND tbestellung.cType = 'B'
GROUP BY tArtikel_kArtikel
) AS jVKDurchschnitt ON jVKDurchschnitt.tArtikel_kArtikel = tartikel.kArtikel
LEFT JOIN (
SELECT jabsatzgesamt.tArtikel_kArtikel,
CONCAT((ISNULL(retourengesamt.rm, 0.0)/jabsatzgesamt.absatz)*100, '%') as Retourenquote
FROM
(SELECT tArtikel_kArtikel,
ROUND(CONVERT(FLOAT, ISNULL(SUM(tbestellpos.nAnzahl), 0.0)), 2) AS absatz
FROM tbestellung
JOIN tbestellpos ON tbestellpos.tBestellung_kBestellung = tBestellung.kBestellung
WHERE tbestellung.cType = 'B'
AND tBestellung.nStorno = 0 -- Stornierte Aufträge nicht beachten
GROUP BY tArtikel_kArtikel) AS jabsatzgesamt
LEFT JOIN
(SELECT kArtikel,
ROUND(CONVERT(FLOAT, ISNULL(SUM(tRMRetourePos.fAnzahl), 0.0)), 2) AS rm
FROM tbestellung
JOIN tRMRetoure ON tRMRetoure.kBestellung = tBestellung.kBestellung
JOIN tRMRetourePos ON tRMRetourePos.kRMRetoure = tRMRetoure.kRMRetoure
GROUP BY kArtikel) AS retourengesamt on retourengesamt.kArtikel=jabsatzgesamt.tArtikel_kArtikel)
as jRetourenGesamt on jRetourenGesamt.tArtikel_kArtikel = tartikel.kArtikel
WHERE kVaterArtikel = @Key

UNION -- Standardartikel
SELECT
CASE
WHEN tartikel.kStueckliste > 0 THEN 'Stückliste'
ELSE 'Standardartikel'
END AS 'Artikeltyp',
tartikel.cArtNr AS ArtNr,
CASE
WHEN tartikel.kStueckliste > 0 THEN CONCAT('(Stückliste) ', tArtikelBeschreibung.cName)
ELSE tArtikelBeschreibung.cName
END AS Artikelname,
ROUND(CONVERT(FLOAT, vLagerbestandEx.fVerfuegbar), 2) AS 'Verfügbar',
ROUND(CONVERT(FLOAT, vLagerbestandEx.fZulauf), 2) AS 'Zulauf',
CASE
WHEN ISNULL(jLetzte365Tage.absatz, 0) > 0 THEN CONCAT(ROUND(CONVERT(FLOAT, vLagerbestandEx.fVerfuegbar / (ISNULL(jLetzte365Tage.absatz, 0) / 365)), 1), ' Tage')
ELSE 'unendlich'
END AS 'Lagerreichweite',
ISNULL(jLetzte30Tage.absatz, 0) AS 'Absatz 30 Tage',
ISNULL(jLetzte90Tage.absatz, 0) AS 'Abs. 90 Tage',
ISNULL(jLetzte365Tage.absatz, 0) AS 'Abs. 365 Tage',
ISNULL(jAbsatzGesamt.absatz, 0) AS 'Abs. Gesamt',
ISNULL(jVKDurchschnitt.vk, 0) AS 'Ø VK-Brutto',
ISNULL(jRetourenGesamt.Retourenquote, '0%') AS 'Retourenquote',
CASE
WHEN ISNULL(jLetzte30Tage.absatz, 0) > 0 OR vLagerbestandEx.fVerfuegbar > 0 THEN CONCAT(ROUND(CONVERT(FLOAT, (ISNULL(jLetzte30Tage.absatz, 0) / (vLagerbestandEx.fVerfuegbar + ISNULL(jLetzte30Tage.absatz, 0)) * 100)), 1), '%')
ELSE '-'
END AS 'Aberkaufsquote (Monat)'
FROM tartikel
JOIN dbo.tSpracheUsed ON nStandard = 1
JOIN dbo.tArtikelBeschreibung ON tArtikelBeschreibung.kArtikel = tartikel.kArtikel
AND tArtikelBeschreibung.kSprache = tSpracheUsed.kSprache
AND tArtikelBeschreibung.kPlattform=1
JOIN vLagerbestandEx ON vLagerbestandEx.kArtikel = tartikel.kArtikel
LEFT JOIN (
SELECT tArtikel_kArtikel, ROUND(CONVERT(FLOAT, ISNULL(SUM(tbestellpos.nAnzahl), 0.0)), 2) AS absatz
FROM tbestellung
JOIN tbestellpos ON tbestellpos.tBestellung_kBestellung = tBestellung.kBestellung
WHERE tBestellung.nStorno = 0 -- Stornierte Aufträge nicht beachten
AND tbestellung.cType = 'B'
AND tBestellung.dErstellt > DATEADD(DAY, -30, getdate())
GROUP BY tArtikel_kArtikel
) AS jLetzte30Tage ON jLetzte30Tage.tArtikel_kArtikel = tartikel.kArtikel
LEFT JOIN (
SELECT tArtikel_kArtikel, ROUND(CONVERT(FLOAT, ISNULL(SUM(tbestellpos.nAnzahl), 0.0)), 2) AS absatz
FROM tbestellung
JOIN tbestellpos ON tbestellpos.tBestellung_kBestellung = tBestellung.kBestellung
WHERE tBestellung.nStorno = 0 -- Stornierte Aufträge nicht beachten
AND tbestellung.cType = 'B'
AND tBestellung.dErstellt > DATEADD(DAY, -90, getdate())
GROUP BY tArtikel_kArtikel
) AS jLetzte90Tage ON jLetzte90Tage.tArtikel_kArtikel = tartikel.kArtikel
LEFT JOIN (
SELECT tArtikel_kArtikel, ROUND(CONVERT(FLOAT, ISNULL(SUM(tbestellpos.nAnzahl), 0.0)), 2) AS absatz
FROM tbestellung
JOIN tbestellpos ON tbestellpos.tBestellung_kBestellung = tBestellung.kBestellung
WHERE tBestellung.nStorno = 0 -- Stornierte Aufträge nicht beachten
AND tbestellung.cType = 'B'
AND tBestellung.dErstellt > DATEADD(DAY, -365, getdate())
GROUP BY tArtikel_kArtikel
) AS jLetzte365Tage ON jLetzte365Tage.tArtikel_kArtikel = tartikel.kArtikel
LEFT JOIN (
SELECT tArtikel_kArtikel, ROUND(CONVERT(FLOAT, ISNULL(SUM(tbestellpos.nAnzahl), 0.0)), 2) AS absatz
FROM tbestellung
JOIN tbestellpos ON tbestellpos.tBestellung_kBestellung = tBestellung.kBestellung
WHERE tBestellung.nStorno = 0 -- Stornierte Aufträge nicht beachten
AND tbestellung.cType = 'B'
GROUP BY tArtikel_kArtikel
) AS jAbsatzGesamt ON jAbsatzGesamt.tArtikel_kArtikel = tartikel.kArtikel
LEFT JOIN (
SELECT tArtikel_kArtikel, ROUND(CONVERT(FLOAT, ISNULL(AVG(tbestellpos.fVKPreis), 0.0)), 2) AS vk
FROM tbestellpos
JOIN tBestellung ON tbestellpos.tBestellung_kBestellung = tBestellung.kBestellung
WHERE tBestellung.nStorno = 0 -- Stornierte Aufträge nicht beachten
AND tbestellung.cType = 'B'
GROUP BY tArtikel_kArtikel
) AS jVKDurchschnitt ON jVKDurchschnitt.tArtikel_kArtikel = tartikel.kArtikel
LEFT JOIN (
SELECT jabsatzgesamt.tArtikel_kArtikel,
CONCAT((ISNULL(retourengesamt.rm, 0.0)/jabsatzgesamt.absatz)*100, '%') as Retourenquote
FROM
(SELECT tArtikel_kArtikel,
ROUND(CONVERT(FLOAT, ISNULL(SUM(tbestellpos.nAnzahl), 0.0)), 2) AS absatz
FROM tbestellung
JOIN tbestellpos ON tbestellpos.tBestellung_kBestellung = tBestellung.kBestellung
WHERE tbestellung.cType = 'B'
AND tBestellung.nStorno = 0 -- Stornierte Aufträge nicht beachten
GROUP BY tArtikel_kArtikel) AS jabsatzgesamt
LEFT JOIN
(SELECT kArtikel,
ROUND(CONVERT(FLOAT, ISNULL(SUM(tRMRetourePos.fAnzahl), 0.0)), 2) AS rm
FROM tbestellung
JOIN tRMRetoure ON tRMRetoure.kBestellung = tBestellung.kBestellung
JOIN tRMRetourePos ON tRMRetourePos.kRMRetoure = tRMRetoure.kRMRetoure
GROUP BY kArtikel) AS retourengesamt on retourengesamt.kArtikel=jabsatzgesamt.tArtikel_kArtikel)
as jRetourenGesamt on jRetourenGesamt.tArtikel_kArtikel = tartikel.kArtikel
WHERE tartikel.kArtikel = @Key
AND nIstVater = 0

UNION -- Stücklistenkomponenten
SELECT
'-Komponente' AS 'Artikeltyp',
tartikel.cArtNr AS ArtNr,
tArtikelBeschreibung.cName AS Artikelname,
ROUND(CONVERT(FLOAT, vLagerbestandEx.fVerfuegbar), 2) AS 'Verfügbar',
ROUND(CONVERT(FLOAT, vLagerbestandEx.fZulauf), 2) AS 'Zulauf',
CASE
WHEN ISNULL(jLetzte365Tage.absatz, 0) > 0 THEN CONCAT(ROUND(CONVERT(FLOAT, vLagerbestandEx.fVerfuegbar / (ISNULL(jLetzte365Tage.absatz, 0) / 365)), 1), ' Tage')
ELSE 'unendlich'
END AS 'Lagerreichweite',
ISNULL(jLetzte30Tage.absatz, 0) AS 'Absatz 30 Tage',
ISNULL(jLetzte90Tage.absatz, 0) AS 'Abs. 90 Tage',
ISNULL(jLetzte365Tage.absatz, 0) AS 'Abs. 365 Tage',
ISNULL(jAbsatzGesamt.absatz, 0) AS 'Abs. Gesamt',
ISNULL(jVKDurchschnitt.vk, 0) AS 'Ø VK-Brutto',
ISNULL(jRetourenGesamt.Retourenquote, '0%') AS 'Retourenquote',
CASE
WHEN ISNULL(jLetzte30Tage.absatz, 0) > 0 OR vLagerbestandEx.fVerfuegbar > 0 THEN CONCAT(ROUND(CONVERT(FLOAT, (ISNULL(jLetzte30Tage.absatz, 0) / (vLagerbestandEx.fVerfuegbar + ISNULL(jLetzte30Tage.absatz, 0)) * 100)), 1), '%')
ELSE '-'
END AS 'Aberkaufsquote (Monat)'
FROM tartikel
JOIN dbo.tSpracheUsed ON nStandard = 1
JOIN dbo.tArtikelBeschreibung ON tArtikelBeschreibung.kArtikel = tartikel.kArtikel
AND tArtikelBeschreibung.kSprache = tSpracheUsed.kSprache
AND tArtikelBeschreibung.kPlattform=1
JOIN vLagerbestandEx ON vLagerbestandEx.kArtikel = tartikel.kArtikel
LEFT JOIN (
SELECT tArtikel_kArtikel, ROUND(CONVERT(FLOAT, ISNULL(SUM(tbestellpos.nAnzahl), 0.0)), 2) AS absatz
FROM tbestellung
JOIN tbestellpos ON tbestellpos.tBestellung_kBestellung = tBestellung.kBestellung
WHERE tBestellung.nStorno = 0 -- Stornierte Aufträge nicht beachten
AND tbestellung.cType = 'B'
AND tBestellung.dErstellt > DATEADD(DAY, -30, getdate())
GROUP BY tArtikel_kArtikel
) AS jLetzte30Tage ON jLetzte30Tage.tArtikel_kArtikel = tartikel.kArtikel
LEFT JOIN (
SELECT tArtikel_kArtikel, ROUND(CONVERT(FLOAT, ISNULL(SUM(tbestellpos.nAnzahl), 0.0)), 2) AS absatz
FROM tbestellung
JOIN tbestellpos ON tbestellpos.tBestellung_kBestellung = tBestellung.kBestellung
WHERE tBestellung.nStorno = 0 -- Stornierte Aufträge nicht beachten
AND tbestellung.cType = 'B'
AND tBestellung.dErstellt > DATEADD(DAY, -90, getdate())
GROUP BY tArtikel_kArtikel
) AS jLetzte90Tage ON jLetzte90Tage.tArtikel_kArtikel = tartikel.kArtikel
LEFT JOIN (
SELECT tArtikel_kArtikel, ROUND(CONVERT(FLOAT, ISNULL(SUM(tbestellpos.nAnzahl), 0.0)), 2) AS absatz
FROM tbestellung
JOIN tbestellpos ON tbestellpos.tBestellung_kBestellung = tBestellung.kBestellung
WHERE tBestellung.nStorno = 0 -- Stornierte Aufträge nicht beachten
AND tbestellung.cType = 'B'
AND tBestellung.dErstellt > DATEADD(DAY, -365, getdate())
GROUP BY tArtikel_kArtikel
) AS jLetzte365Tage ON jLetzte365Tage.tArtikel_kArtikel = tartikel.kArtikel
LEFT JOIN (
SELECT tArtikel_kArtikel, ROUND(CONVERT(FLOAT, ISNULL(SUM(tbestellpos.nAnzahl), 0.0)), 2) AS absatz
FROM tbestellung
JOIN tbestellpos ON tbestellpos.tBestellung_kBestellung = tBestellung.kBestellung
WHERE tBestellung.nStorno = 0 -- Stornierte Aufträge nicht beachten
AND tbestellung.cType = 'B'
GROUP BY tArtikel_kArtikel
) AS jAbsatzGesamt ON jAbsatzGesamt.tArtikel_kArtikel = tartikel.kArtikel
LEFT JOIN (
SELECT tArtikel_kArtikel, ROUND(CONVERT(FLOAT, ISNULL(AVG(tbestellpos.fVKPreis), 0.0)), 2) AS vk
FROM tbestellpos
JOIN tBestellung ON tbestellpos.tBestellung_kBestellung = tBestellung.kBestellung
WHERE tBestellung.nStorno = 0 -- Stornierte Aufträge nicht beachten
AND tbestellung.cType = 'B'
GROUP BY tArtikel_kArtikel
) AS jVKDurchschnitt ON jVKDurchschnitt.tArtikel_kArtikel = tartikel.kArtikel
LEFT JOIN (
SELECT jabsatzgesamt.tArtikel_kArtikel,
CONCAT((ISNULL(retourengesamt.rm, 0.0)/jabsatzgesamt.absatz)*100, '%') as Retourenquote
FROM
(SELECT tArtikel_kArtikel,
ROUND(CONVERT(FLOAT, ISNULL(SUM(tbestellpos.nAnzahl), 0.0)), 2) AS absatz
FROM tbestellung
JOIN tbestellpos ON tbestellpos.tBestellung_kBestellung = tBestellung.kBestellung
WHERE tbestellung.cType = 'B'
AND tBestellung.nStorno = 0 -- Stornierte Aufträge nicht beachten
GROUP BY tArtikel_kArtikel) AS jabsatzgesamt
LEFT JOIN
(SELECT kArtikel,
ROUND(CONVERT(FLOAT, ISNULL(SUM(tRMRetourePos.fAnzahl), 0.0)), 2) AS rm
FROM tbestellung
JOIN tRMRetoure ON tRMRetoure.kBestellung = tBestellung.kBestellung
JOIN tRMRetourePos ON tRMRetourePos.kRMRetoure = tRMRetoure.kRMRetoure
GROUP BY kArtikel) AS retourengesamt on retourengesamt.kArtikel=jabsatzgesamt.tArtikel_kArtikel)
as jRetourenGesamt on jRetourenGesamt.tArtikel_kArtikel = tartikel.kArtikel
WHERE tartikel.kArtikel IN (SELECT tStueckliste.kArtikel FROM tartikel JOIN tStueckliste ON tStueckliste.kStueckliste = tartikel.kStueckliste WHERE tartikel.kArtikel = @Key)
AND nIstVater = 0
ORDER BY Artikeltyp DESC, ArtNr
 
Ähnliche Themen
Titel Forum Antworten Datum
Neu Eigene Felder in ZUGFeRD integrieren User helfen Usern - Fragen zu JTL-Wawi 0
Neu Eigene Umsatzsteuer-ID fehlt oft in Aufträgen JTL-Wawi - Fehler und Bugs 3
Wawi 1.11 – viele Arbeitsabläufe sind schlechter geworden JTL-Wawi 1.11 1
Neu Belege aus JTL Wawi zu Lexoffice Schnittstellen Import / Export 5
Neu Amazon VCS Lite: Wie erstellt ihr unter Wawi 1.11 eine vollständige IGL-/ZM-Liste über alle Verkaufskanäle? User helfen Usern - Fragen zu JTL-Wawi 0
Neu Gibt es in der WaWi-Datenbank einen Zeitstempel, der anzeigt wann ein Kunde sich in einem bestimmten Shop registriert hat? User helfen Usern - Fragen zu JTL-Wawi 3
Beantwortet [Shop 5.7.2 / Wawi 2.0.5] GPSR-Daten werden am Artikel nicht angezeigt trotz korrekter Übertragung und installiertem Plugin Allgemeine Fragen zu JTL-Shop 1
Neu Copy/Paste Abstürze seit JTL-Wawi 2.0.5 User helfen Usern - Fragen zu JTL-Wawi 4
Neu Amazon.com - kein Abgleich der Bestände Wawi 1.11.9 Amazon-Anbindung - Fehler und Bugs 0
Neu DSVGO konform 1000 Kunden in WaWi und Shop löschen! User helfen Usern - Fragen zu JTL-Wawi 4
Neu JTL Wawi 1.11.11 - Zahlungsabgleich bei FYRST Bank verlangt immer Passwort User helfen Usern - Fragen zu JTL-Wawi 0
Neu Wawi 1.11. Amazon Rechnungen (extern) in der Kundenansicht verschwunden ?! User helfen Usern - Fragen zu JTL-Wawi 2
Updatezwang beim öffnen der WAWI JTL-Wawi 1.6 13
Neu Installationsdatei für JTL‑Wawi 1.9.6.5 Installation von JTL-Wawi 2
Neu kostenlos: DHL Sendungsverfolgung für JTL-Wawi – Web-Dashboard mit Frühwarnsystem Schnittstellen Import / Export 0
Neu JTL Wawi 2.0 oder höher WooCommerce-Connector 0
Changelog jtl Wawi 2.0.5 JTL-Wawi 2.0 10
Login Wawi nicht möglich nach Update auf 1.11.11 JTL-Wawi 1.11 1
Neu Nach Wawi Update Probleme mit Rechnungsdrucker JTL-POS - Fehler und Bugs 4
JTL Wawi 1.11.xx langsam unbenutzbar! JTL-Wawi 1.11 4
Neu Plugin: JTL Exportformat Google Shopping gibt <g:google_product_category> unter Shop 5.7.1 und Wawi 2.0.4 nicht aus Plugins für JTL-Shop 1
Neu Rabatte aus dem JTL-Shop werden in der Wawi nur als Netto-Preis übernommen, Rabatt % gehen verloren Onlineshop-Anbindung 0
Wawi 1.11.9 Ständige Abstürze bei Aktualisierung Artikelstammdaten JTL-Wawi 1.11 4
ändern von Servernamen nach Neuinstallation von SQL und Verbindung mit neuem Server in der Wawi JTL-Wawi 2.0 2
Neu Ab Wawi 1.10 - JTL.Wawi.Pos.exe direkt ohne JTL-Administrator starten? Allgemeine Fragen zu JTL-POS 2
JTL APP - Fehlermeldung nach Update auf Wawi 1.11. JTL-Wawi App 6
JTL Wawi 1.11. - Fenstergröße - Artikel auf Einkaufsliste setzen JTL-Wawi 1.11 13
Neu Paypal Abgleich - Schnittstelle geändert- Wawi Update Erforderlich ! JTL-Wawi - Fehler und Bugs 12
Neu JTL-Wawi Shopabgleich per E-Mail überwachen (Warnungen & Fehler) Onlineshop-Anbindung 1
Neu Erstellung der Sitemap bei WaWi Abgleich funktioniert nicht Allgemeine Fragen zu JTL-Shop 0
Neu Bug? Führende Nullen bei Sendungsnummern verschwinden in JTL-Wawi 2.0.3 JTL-ShippingLabels - Fehler und Bugs 1
Nach Wawi Update keine Fehlermeldung mehr sichtbar kaufland.de - Anbindung (SCX) 2
DPD Cloud Labeldruck auf Zebra LP 2844-Z seit Update auf JTL-Wawi 1.11.x fehlerhaft JTL-Wawi 1.11 3
JTL-Wawi sucht falschen ShopType nach Gambio-Update JTL-Wawi 1.7 2
Wawi 1.11. Rechnungsanhang funktioniert nicht mehr bei Versandmail JTL-Wawi 1.11 6
Nach update 1.8>1.11 Kein Mandant in JTL-Wawi gefunden JTL-Wawi 1.11 5
POS anbinden an WAWI 1.11.10.0 JTL-Wawi 1.11 2
Emailvorlagen in WAWI JTL-Wawi 2.0 9
Wawi 1.11.10 : Feldinhalt "Kundenkommentar" fehlt beim Versand in WMS JTL-Wawi 1.11 0
Neu Eignes Feld aus Auftrag in Rechnung anzeigen lassen JTL-WaWi 1.11.10 Druck-/ E-Mail-/ Exportvorlagen in JTL-Wawi 2
Lizenz-Störung? Ich erhalte keinen Zugriff mehr zu meiner Wawi, egal welcher User JTL-Wawi 1.11 3
Neu Freelancer für JTL-Wawi, Shop & Prozessautomatisierung Dienstleistung, Jobs und Ähnliches 2
WAWI 2.0.0 erkennt keine Updates JTL-Wawi 2.0 1
Neu Umzug von sehr alter JTL Wawi Version auf neuen PC User helfen Usern - Fragen zu JTL-Wawi 3
Neu JTL REST API (on premise) - welche API Version ab welcher Wawi-Version? Changelog? Schnittstellen Import / Export 0
Wawi verschluckt Zeichen beim Mailversand JTL-Wawi 2.0 1
Neu Ab welcher JTL Wawi Version ist der OnPremise REST API Endpoint POST /v2/returns oder POST /v1/returns für Create Return verfügbar? Schnittstellen Import / Export 0
Beantwortet [WAWI-85758] Nach Update auf 1.11.10 klappt stornieren über ios Wawi App nicht mehr JTL-Workflows - Fehler und Bugs 1
Wawi Meldung SQL Servicepack zu installieren - aber welches? Update SQL2022 CU24 nicht möglich JTL-Wawi 1.11 6
Keine Rückmeldung in JTL Wawi sobald SQL Server Memory durch Database Cache ausgeslastet ist JTL-Wawi 2.0 9

Ähnliche Themen