Hallo zusammen,
für unser externes BI möchte ich gern die in den letzten 90 Tagen verkauften Artikel anzeigen und den Umsatzanteil dieser darstellen.
Soweit funktioniert alles, außer der Aufsummierung der Anteile pro Zeile. Das sollte mit OVER () funktionieren, aber ich es will einfach nicht klappen
.
Es betrifft diese eine auskommentierte Zeile.
Hat vielleicht jemand eine Idee?
Viele Grüße
Mirko
für unser externes BI möchte ich gern die in den letzten 90 Tagen verkauften Artikel anzeigen und den Umsatzanteil dieser darstellen.
Soweit funktioniert alles, außer der Aufsummierung der Anteile pro Zeile. Das sollte mit OVER () funktionieren, aber ich es will einfach nicht klappen
Es betrifft diese eine auskommentierte Zeile.
Hat vielleicht jemand eine Idee?
SQL:
DECLARE @RANGE AS INT = 90
DECLARE @U90 AS DECIMAL = (
SELECT
SUM(abpos.fvkNetto * abpos.fAnzahl) AS 'Umsatz'
FROM
Verkauf.tAuftragPosition abpos
LEFT JOIN Verkauf.tAuftrag ab ON ab.kAuftrag = abpos.kAuftrag
LEFT JOIN tArtikel a ON a.kArtikel = abpos.kArtikel
WHERE
ab.dErstellt >= GETDATE()-@RANGE
AND abpos.kArtikel IS NOT NULL
AND a.cArtNr NOT LIKE 'PS%'
AND a.cArtNr NOT LIKE '%_B'
AND a.cArtNr NOT LIKE '%.0'
AND abpos.kSteuerschluessel IS NOT NULL
AND a.cAktiv = 'Y'
HAVING
SUM(abpos.fvkNetto * abpos.fAnzahl) > 0 )
SELECT
b.cQuelle AS 'Bild',
a.cArtNr AS 'Artikel',
txt.cName AS 'Name',
SUM(abpos.fvkNetto * abpos.fAnzahl) AS 'Umsatz',
FORMAT(SUM(abpos.fvkNetto * abpos.fAnzahl) / @U90, 'P2') AS 'Anteil-%',
--SUM(abpos.fvkNetto * abpos.fAnzahl) OVER () / @U90 AS 'Anteil-%-kumuliert',
FORMAT(lb.fVerfuegbar,'0') AS 'Verfügbar'
FROM
Verkauf.tAuftragPosition abpos
LEFT JOIN Verkauf.tAuftrag ab ON ab.kAuftrag = abpos.kAuftrag
LEFT JOIN tArtikel a ON a.kArtikel = abpos.kArtikel
LEFT JOIN tArtikelbildPlattform bp ON bp.kArtikel = abpos.kArtikel AND bp.kPlattform = 1 AND bp.nNr = 1
LEFT JOIN tBild b ON b.kBild = bp.kBild
LEFT JOIN tArtikelBeschreibung txt ON txt.kArtikel = abpos.kArtikel AND txt.kPlattform = 1 AND txt.kSprache = 1
LEFT JOIN tLagerbestand lb ON lb.kArtikel = abpos.kArtikel
WHERE
ab.dErstellt >= GETDATE()-@RANGE
AND abpos.kArtikel IS NOT NULL
AND a.cArtNr NOT LIKE 'PS%'
AND a.cArtNr NOT LIKE '%_B'
AND a.cArtNr NOT LIKE '%.0'
AND abpos.kSteuerschluessel IS NOT NULL
AND a.cAktiv = 'Y'
GROUP BY
a.cArtNr,
txt.cName,
b.cQuelle,
lb.fVerfuegbar
HAVING
SUM(abpos.fvkNetto * abpos.fAnzahl) > 0
ORDER BY
SUM(abpos.fvkNetto * abpos.fAnzahl) DESC
Viele Grüße
Mirko