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

das-ding

Aktives Mitglied
30. August 2019
27
3
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 Übersichten - Beschaffung - Bestellvorschläge - nur Standardlieferant anzeigen Eigene Übersichten in der JTL-Wawi 4
QR-Code Formel kann nicht in die eigene Vorlage hinzugefügt werden JTL-Wawi 1.9 1
Neu JTL Shop 5.4.0 eigene Inhalte/Seiten hinzufügen nicht möglich JTL-Shop - Fehler und Bugs 5
Neu SQL Eigener Export - Eigene Felder im Auftrag User helfen Usern - Fragen zu JTL-Wawi 7
Neu Eigene Felder aus dem Auftrag in der Packtisch+ / WMS Ausgabe JTL-WMS / JTL-Packtisch+ - Ideen, Lob und Kritik 4
Lieferscheine -versendet / Eigene Übersicht: Kundenkategorie aus den Kundenstammdaten JTL-Wawi 1.8 3
Neu Eigene Felder / Attribute spaltenweise exportieren JTL Ameise - Eigene Exporte 6
Neu Wie kann ich über eigene Felder eine Mehrfachauswahl erstellen? User helfen Usern - Fragen zu JTL-Wawi 4
Neu Eigene Übersicht Kunde QR Code Kundennummer Eigene Übersichten in der JTL-Wawi 4
Eigene USt-IdNr. fehlt in der Auftragsansicht bei Auslandsbestellungen (JTL-Wawi 1.8.12.2) JTL-Wawi 1.8 3
Neu Eigene Alerts im Template ausgeben bzw. hinzufügen Templates für JTL-Shop 0
Neu eigene Tabs in Ebay Vorlage einfügen eBay-Designvorlagen - Fehler und Bugs 0
Eigene Felder lassen sich in der Wawi nicht löschen JTL-Wawi 1.8 0
Neu Frage zur Rechtevergabe bei eigenen Übersichten Eigene Übersichten in der JTL-Wawi 0
Neu Wie erstelle ich Bundles mit JTL Wawi? User helfen Usern 0
Neu HubSpot Anbindung an JTL-Wawi (CRM) User helfen Usern 1
Neu JTL WMS / WaWi / Retouren - Kundeneigentum an Kunden schicken Arbeitsabläufe in JTL-Wawi 1
Neu Anzeige der Konten in der Wawi User helfen Usern - Fragen zu JTL-Wawi 2
Neu POS Aufträge in der Wawi nicht abgeschlossen, stehen somit im Versand als "offen" JTL-POS - Fehler und Bugs 0
Neu Update JTL Wawi von 1.0.0.0 auf 1.8.10.0 Installation von JTL-Wawi 8
Neu Ausgabeweg => Beschreibungen werden nicht von JTL Wawi gezogen für Shop/ebay/sonst was User helfen Usern - Fragen zu JTL-Wawi 3
Neu Shop 5.4.0: Zahlungsarten nun als Position in der Wawi? JTL-Shop - Ideen, Lob und Kritik 11
POS Zahlungen tauchen in Wawi unter Zahlungen nicht mehr auf JTL-Wawi 1.9 0
Mailausgabe in JTL WaWi steuern (Rechnung mailen, Auftrag mailen etc.) JTL-Wawi 1.9 0
Neu Dienstleistungen rund um JTL WaWi, WMS, Fulfillment Dienstleistung, Jobs und Ähnliches 2
Neu Rabattfunktion (Wawi-Stammdaten) funktioniert nicht ... Betrieb / Pflege von JTL-Shop 4
Neu POS GTIN Suche und Wawi ausbuchen JTL-POS - Fehler und Bugs 0
Neu direkte Anbindung jtl wawi zu otto User helfen Usern - Fragen zu JTL-Wawi 3
Neu B-Ware/Artikelzustände im Wawi Arbeitsabläufe in JTL-Wawi 5
Neu SW 5.7.18: welcher Connector mit welcher Wawi? Shopware-Connector 1
Neu Wawi synchronisiert nicht mehr zu WooCommerce WooCommerce-Connector 8
Neu Wichtige Infos zu GPSR-Attributen für JTL-eazyAuction und kommende JTL-Wawi Version 1.9.6.0 Einrichtung und Installation von JTL-eazyAuction 50
Neu Artikel mit Zustand beschädigt wird nicht als eigenständiger Artikel in der WaWi angezeigt User helfen Usern - Fragen zu JTL-Wawi 1
Neu JTL WAWI DPD Paketomat Österreich Druck-/ E-Mail-/ Exportvorlagen in JTL-Wawi 1
Wie versendet die Wawi E-Mails? JTL-Wawi 1.9 4
Neu Ameise (WAWI 1.9.5.2) -> Wie funktioniert der Upload der Produktion JTL-Plan&Produce - Ideen, Lob und Kritik 0
JTL Wawi Update 1.8.12.4 auf 1.9.5.2 nicht möglich JTL-Wawi 1.9 3
Neu kKunde != InternerSchlüssel > Aus Shop den Internern Schlüssel der WaWi Technische Fragen zu Plugins und Templates 1
Neu WooCommerce und JTL Wawi lassen sich nicht verbinden WooCommerce-Connector 3
Neu Artikel lässt sich im Shop 5.2.5 über die Wawi nicht löschen JTL-Shop - Fehler und Bugs 2
Neu Fehler bei Abgleich JTl Wawi mit JTL Shop User helfen Usern - Fragen zu JTL-Wawi 2
Neu JTL-Wawi Anbindung an Tyre24 Plattform Schnittstellen Import / Export 0
Mollie und die Wawi JTL-Wawi 1.8 5
Wie lange benötigt bei euch die Wawi zum starten JTL-Wawi 1.9 7
Neu Wawi OpenTrans und MyFactory User helfen Usern 0
Neu WAWI 1.10 Servicedesk (Beta) 1
Neu Im JTL-Shop angelegte Neukunden werden nicht an Wawi übertragen Onlineshop-Anbindung 2
Neu JTL WaWI abgleich mit Amazon für Deal Day & Black Friday User helfen Usern - Fragen zu JTL-Wawi 1
Neu Toplevel-Banner hinzufügen und/oder über Wawi Steuern Allgemeine Fragen zu JTL-Shop 0
Neu Wie in der Wawi gebrauchte Artikel vom Endkunden einkaufen User helfen Usern - Fragen zu JTL-Wawi 4

Ähnliche Themen