Inhaltsverzeichnis

    Eigene Übersichten für Artikel

    Auf dieser Seite finden Sie Beispiel-SQLs für eigene Übersichten im Bereich Artikel von JTL-Wawi. Lesen Sie die Seite Eigene Übersichten erstellen, um zu erfahren, wie Sie eigene Übersichten erstellen.

    Abverkauf pro Kunde

    Übersicht aller Kunden, die den markierten Artikel jemals gekauft haben. Folgende Informationen werden dargestellt:

    • Artikelnummer
    • Kundennummer
    • Kunde
    • Durchschn. VK-Brutto
    • Anzahl Aufträge
    • Gesamtmenge
    • Durchschn. Menge pro Kauf
    • Letztes Kaufdatum
    -- Standardartikel
    SELECT
    	tArtikel.cArtNr AS 'ArtNr',
        tKunde.cKundenNr AS Kundennummer,
        CONCAT(tAdresse.cVorname, ' ', tAdresse.cName, ' ', tAdresse.cFirma) AS Kunde,
    	ROUND(CONVERT(FLOAT, ISNULL(AVG(tbestellpos.fVKNetto), 0.0)), 2) AS 'Ø VK-Netto',
        ROUND(CONVERT(FLOAT, ISNULL(AVG(tbestellpos.fVKPreis), 0.0)), 2) AS 'Ø VK-Brutto',	
        COUNT(DISTINCT(tBestellung.kBestellung)) AS Auftraege,
        ROUND(CONVERT(FLOAT, SUM(tbestellpos.nAnzahl)), 2) AS Gesamtmenge,
        CASE
            WHEN COUNT(DISTINCT(tBestellung.kBestellung)) > 0 THEN ROUND(CONVERT(FLOAT, SUM(tbestellpos.nAnzahl) / COUNT(DISTINCT(tBestellung.kBestellung))), 2)
            ELSE 0
        END AS 'Ø Menge pro Kauf',
        MAX(tBestellung.dErstellt) AS 'Letzter Kauf'
    FROM tbestellpos
    JOIN tBestellung ON tbestellpos.tBestellung_kBestellung = tBestellung.kBestellung
    JOIN tKunde ON tBestellung.tKunde_kKunde = tkunde.kKunde
    JOIN tAdresse ON tAdresse.kKunde = tkunde.kKunde
    JOIN tartikel ON tartikel.kArtikel = tbestellpos.tArtikel_kArtikel
    WHERE tartikel.kArtikel = @Key
    	AND tBestellung.nStorno = 0 -- Stornierte Aufträge nicht beachten
        AND tbestellung.cType = 'B'
    GROUP BY    
    			tbestellung.tKunde_kKunde,
                tartikel.kVaterArtikel,
                tKunde.cKundenNr,
                tAdresse.cVorname,
                tAdresse.cName,
                tAdresse.cFirma,
    			tArtikel.cArtNr
    
    -- Vaterartikel bei Varkombis
    UNION
    SELECT
    	CONCAT('Alle Kinder von: ', jArtikel.cArtNr) AS 'ArtNr',
        tKunde.cKundenNr AS Kundennummer,
        CONCAT(tAdresse.cVorname, ' ', tAdresse.cName, ' ', tAdresse.cFirma) AS Kunde,
    	ROUND(CONVERT(FLOAT, ISNULL(AVG(tbestellpos.fVKNetto), 0.0)), 2) AS 'Ø VK-Netto',
        ROUND(CONVERT(FLOAT, ISNULL(AVG(tbestellpos.fVKPreis), 0.0)), 2) AS 'Ø VK-Brutto',	
        COUNT(DISTINCT(tBestellung.kBestellung)) AS Auftraege,
        ROUND(CONVERT(FLOAT, SUM(tbestellpos.nAnzahl)), 2) AS Gesamtmenge,
        CASE
            WHEN COUNT(DISTINCT(tBestellung.kBestellung)) > 0 THEN ROUND(CONVERT(FLOAT, SUM(tbestellpos.nAnzahl) / COUNT(DISTINCT(tBestellung.kBestellung))), 2)
            ELSE 0
        END AS 'Ø Menge pro Kauf',
        MAX(tBestellung.dErstellt) AS 'Letzter Kauf'
    FROM tbestellpos
    JOIN tBestellung ON tbestellpos.tBestellung_kBestellung = tBestellung.kBestellung
    JOIN tKunde ON tBestellung.tKunde_kKunde = tkunde.kKunde
    JOIN tAdresse ON tAdresse.kKunde = tkunde.kKunde
    JOIN tartikel ON tartikel.kArtikel = tbestellpos.tArtikel_kArtikel
    JOIN
    (SELECT tartikel.kArtikel, cArtNr
    	FROM tartikel
    	WHERE tartikel.kArtikel = @Key
    ) AS jArtikel ON 1=1
    WHERE tartikel.kVaterArtikel = @Key
    	AND tBestellung.nStorno = 0 -- Stornierte Aufträge nicht beachten
        AND tbestellung.cType = 'B'
    GROUP BY    
    			tbestellung.tKunde_kKunde,
                tartikel.kVaterArtikel,
                tKunde.cKundenNr,
                tAdresse.cVorname,
                tAdresse.cName,
                tAdresse.cFirma,
    			jArtikel.cArtNr
    ORDER BY 'Letzter Kauf' DESC

    Aktivität pro Plattform

    Hier sehen Sie einen Überblick über alle Plattformen, auf denen der Artikel aktuell aktiv ist. Das können Marktplätze wie Amazon und eBay sowie Marktplätze über Drittanbindungen sein, aber auch Onlineshops und POS-Kassen. Folgende Informationen werden dargestellt:

    • Plattform
    • Aktuell angebotene Menge
    • Aktueller Preis
    • Absatz in den letzten 30 Tagen
    • Absatz in den letzten 90 Tagen
    • Absatz in den letzten 365 Tagen
    • Absatz Gesamt
    • Durchschn. VK-Brutto
    • Angebots-ID, z. B. ASIN von Amazon oder ItemID von eBay
    --Amazon Angebote
    SELECT tPlattform.cName AS 'Plattform',
            jAmazon.nQuantity AS 'Menge',
    		jAmazon.fPrice AS 'Akt. Preis',
            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) 'Ø VK-Brutto',
    		ISNULL(jAmazon.cASIN1, '') AS 'ID'
    FROM tPlattform
    JOIN ( --läuft er überhaupt auf amazon?
        SELECT	nPlattform,
    			nQuantity,
    			ROUND(CONVERT(FLOAT, fPrice), 2) AS fPrice,
    			pf_amazon_angebot.cASIN1
        FROM pf_amazon_angebot
    	JOIN pf_amazon_angebot_mapping ON pf_amazon_angebot_mapping.cSellerSKU = pf_amazon_angebot.cSellerSKU
    		AND pf_amazon_angebot_mapping.kUser = pf_amazon_angebot.kUser
        WHERE pf_amazon_angebot_mapping.kArtikel = @Key
    	) AS jAmazon ON jAmazon.nPlattform = tPlattform.nPlattform
    LEFT JOIN (
        SELECT nPlatform, ROUND(CONVERT(FLOAT, ISNULL(SUM(tbestellpos.nAnzahl), 0.0)), 2) AS absatz
        FROM tbestellung
        JOIN tbestellpos ON tbestellpos.tBestellung_kBestellung = tBestellung.kBestellung
        WHERE tbestellpos.tArtikel_kArtikel = @Key
            AND tBestellung.nStorno = 0 -- Stornierte Aufträge nicht beachten
            AND tbestellung.cType = 'B'
            AND tBestellung.dErstellt > DATEADD(DAY, -30, getdate())
        GROUP BY nPlatform
    ) AS jLetzte30Tage ON jLetzte30Tage.nPlatform = tPlattform.nPlattform
    LEFT JOIN (
        SELECT nPlatform, ROUND(CONVERT(FLOAT, ISNULL(SUM(tbestellpos.nAnzahl), 0.0)), 2) AS absatz
        FROM tbestellung
        JOIN tbestellpos ON tbestellpos.tBestellung_kBestellung = tBestellung.kBestellung
        WHERE tbestellpos.tArtikel_kArtikel = @Key
            AND tBestellung.nStorno = 0 -- Stornierte Aufträge nicht beachten
            AND tbestellung.cType = 'B'
            AND tBestellung.dErstellt > DATEADD(DAY, -90, getdate())
        GROUP BY nPlatform
    ) AS jLetzte90Tage ON jLetzte90Tage.nPlatform = tPlattform.nPlattform
    LEFT JOIN (
        SELECT nPlatform, ROUND(CONVERT(FLOAT, ISNULL(SUM(tbestellpos.nAnzahl), 0.0)), 2) AS absatz
        FROM tbestellung
        JOIN tbestellpos ON tbestellpos.tBestellung_kBestellung = tBestellung.kBestellung
        WHERE tbestellpos.tArtikel_kArtikel = @Key
            AND tBestellung.nStorno = 0 -- Stornierte Aufträge nicht beachten
            AND tbestellung.cType = 'B'
            AND tBestellung.dErstellt > DATEADD(DAY, -365, getdate())
        GROUP BY nPlatform
    ) AS jLetzte365Tage ON jLetzte365Tage.nPlatform = tPlattform.nPlattform
    LEFT JOIN (
        SELECT nPlatform, ROUND(CONVERT(FLOAT, ISNULL(SUM(tbestellpos.nAnzahl), 0.0)), 2) AS absatz
        FROM tbestellung
        JOIN tbestellpos ON tbestellpos.tBestellung_kBestellung = tBestellung.kBestellung
        WHERE tbestellpos.tArtikel_kArtikel = @Key
            AND tBestellung.nStorno = 0 -- Stornierte Aufträge nicht beachten
            AND tbestellung.cType = 'B'
        GROUP BY nPlatform
    ) AS jAbsatzGesamt ON jAbsatzGesamt.nPlatform = tPlattform.nPlattform
    LEFT JOIN (
        SELECT nPlatform, ROUND(CONVERT(FLOAT, ISNULL(AVG(tbestellpos.fVKPreis), 0.0)), 2) AS vk
        FROM tbestellpos
        JOIN tBestellung ON tbestellpos.tBestellung_kBestellung = tBestellung.kBestellung
        WHERE tbestellpos.tArtikel_kArtikel = @Key
            AND tBestellung.nStorno = 0 -- Stornierte Aufträge nicht beachten
            AND tbestellung.cType = 'B'
        GROUP BY nPlatform
    ) AS jVKDurchschnitt ON jVKDurchschnitt.nPlatform = tPlattform.nPlattform
    UNION --eBay Angebote - normale Artikel
    SELECT tPlattform.cName AS 'Plattform',
            ISNULL(jEbay.Quantity, 0) AS 'Menge',
    		ISNULL(jEbay.StartPrice, 0) AS 'Akt. Preis',
            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) 'Ø VK-Brutto',
    		ISNULL(jEbay.ItemID, '') AS 'ID'
    FROM tPlattform
    JOIN ( --läuft er überhaupt auf ebay?
     SELECT	ebay_xx_sites.kPlattform,
    		ebay_item.Quantity,
    		ROUND(CONVERT(FLOAT, ebay_item.StartPrice), 2) AS StartPrice,
    		ebay_item.ItemID
        FROM ebay_item
    	JOIN ebay_xx_sites ON ebay_xx_sites.SiteID = ebay_item.SiteID
        WHERE	ebay_item.kArtikel = @Key
    		AND ebay_item.Status IN (3,7)
    ) AS jEbay ON jEbay.kPlattform = tPlattform.nPlattform
    LEFT JOIN (
        SELECT nPlatform, ROUND(CONVERT(FLOAT, ISNULL(SUM(tbestellpos.nAnzahl), 0.0)), 2) AS absatz
        FROM tbestellung
        JOIN tbestellpos ON tbestellpos.tBestellung_kBestellung = tBestellung.kBestellung
        WHERE tbestellpos.tArtikel_kArtikel = @Key
            AND tBestellung.nStorno = 0 -- Stornierte Aufträge nicht beachten
            AND tbestellung.cType = 'B'
            AND tBestellung.dErstellt > DATEADD(DAY, -30, getdate())
        GROUP BY nPlatform
    ) AS jLetzte30Tage ON jLetzte30Tage.nPlatform = tPlattform.nPlattform
    LEFT JOIN (
        SELECT nPlatform, ROUND(CONVERT(FLOAT, ISNULL(SUM(tbestellpos.nAnzahl), 0.0)), 2) AS absatz
        FROM tbestellung
        JOIN tbestellpos ON tbestellpos.tBestellung_kBestellung = tBestellung.kBestellung
        WHERE tbestellpos.tArtikel_kArtikel = @Key
            AND tBestellung.nStorno = 0 -- Stornierte Aufträge nicht beachten
            AND tbestellung.cType = 'B'
            AND tBestellung.dErstellt > DATEADD(DAY, -90, getdate())
        GROUP BY nPlatform
    ) AS jLetzte90Tage ON jLetzte90Tage.nPlatform = tPlattform.nPlattform
    LEFT JOIN (
        SELECT nPlatform, ROUND(CONVERT(FLOAT, ISNULL(SUM(tbestellpos.nAnzahl), 0.0)), 2) AS absatz
        FROM tbestellung
        JOIN tbestellpos ON tbestellpos.tBestellung_kBestellung = tBestellung.kBestellung
        WHERE tbestellpos.tArtikel_kArtikel = @Key
            AND tBestellung.nStorno = 0 -- Stornierte Aufträge nicht beachten
            AND tbestellung.cType = 'B'
            AND tBestellung.dErstellt > DATEADD(DAY, -365, getdate())
        GROUP BY nPlatform
    ) AS jLetzte365Tage ON jLetzte365Tage.nPlatform = tPlattform.nPlattform
    LEFT JOIN (
        SELECT nPlatform, ROUND(CONVERT(FLOAT, ISNULL(SUM(tbestellpos.nAnzahl), 0.0)), 2) AS absatz
        FROM tbestellung
        JOIN tbestellpos ON tbestellpos.tBestellung_kBestellung = tBestellung.kBestellung
        WHERE tbestellpos.tArtikel_kArtikel = @Key
            AND tBestellung.nStorno = 0 -- Stornierte Aufträge nicht beachten
            AND tbestellung.cType = 'B'
        GROUP BY nPlatform
    ) AS jAbsatzGesamt ON jAbsatzGesamt.nPlatform = tPlattform.nPlattform
    LEFT JOIN (
        SELECT nPlatform, ROUND(CONVERT(FLOAT, ISNULL(AVG(tbestellpos.fVKPreis), 0.0)), 2) AS vk
        FROM tbestellpos
        JOIN tBestellung ON tbestellpos.tBestellung_kBestellung = tBestellung.kBestellung
        WHERE tbestellpos.tArtikel_kArtikel = @Key
            AND tBestellung.nStorno = 0 -- Stornierte Aufträge nicht beachten
            AND tbestellung.cType = 'B'
        GROUP BY nPlatform
    ) AS jVKDurchschnitt ON jVKDurchschnitt.nPlatform = tPlattform.nPlattform
    UNION --eBay Angebote - als Kindartikel im eBay Variationsangebot
    SELECT tPlattform.cName AS 'Plattform',
            jEbay.fAnzahl AS 'Menge',
    		jEbay.fPreis AS 'Akt. Preis',
            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) 'Ø VK-Brutto',
    		CONCAT('Varkombi-Kind: ', jEbay.ItemID) AS 'ID'
    FROM tPlattform
    JOIN ( --läuft er überhaupt auf ebay als Kindartikel?
     SELECT	ebay_xx_sites.kPlattform,
    		CONVERT(INT, ebay_item2kombi.fAnzahl) AS fAnzahl,
    		ROUND(CONVERT(FLOAT, ebay_item2kombi.fPreis), 2) AS fPreis,
    		ebay_item.ItemID
        FROM ebay_item
    	JOIN ebay_xx_sites ON ebay_xx_sites.SiteID = ebay_item.SiteID
    	JOIN ebay_item2kombi ON ebay_item2kombi.kItem = ebay_item.kItem
    	JOIN tartikel ON tartikel.kEigenschaftKombi = ebay_item2kombi.kEigenschaftKombi
        WHERE	tartikel.kArtikel = @Key
    		AND ebay_item.Status IN (3,7)
    ) AS jEbay ON jEbay.kPlattform = tPlattform.nPlattform
    LEFT JOIN (
        SELECT nPlatform, ROUND(CONVERT(FLOAT, ISNULL(SUM(tbestellpos.nAnzahl), 0.0)), 2) AS absatz
        FROM tbestellung
        JOIN tbestellpos ON tbestellpos.tBestellung_kBestellung = tBestellung.kBestellung
        WHERE tbestellpos.tArtikel_kArtikel = @Key
            AND tBestellung.nStorno = 0 -- Stornierte Aufträge nicht beachten
            AND tbestellung.cType = 'B'
            AND tBestellung.dErstellt > DATEADD(DAY, -30, getdate())
        GROUP BY nPlatform
    ) AS jLetzte30Tage ON jLetzte30Tage.nPlatform = tPlattform.nPlattform
    LEFT JOIN (
        SELECT nPlatform, ROUND(CONVERT(FLOAT, ISNULL(SUM(tbestellpos.nAnzahl), 0.0)), 2) AS absatz
        FROM tbestellung
        JOIN tbestellpos ON tbestellpos.tBestellung_kBestellung = tBestellung.kBestellung
        WHERE tbestellpos.tArtikel_kArtikel = @Key
            AND tBestellung.nStorno = 0 -- Stornierte Aufträge nicht beachten
            AND tbestellung.cType = 'B'
            AND tBestellung.dErstellt > DATEADD(DAY, -90, getdate())
        GROUP BY nPlatform
    ) AS jLetzte90Tage ON jLetzte90Tage.nPlatform = tPlattform.nPlattform
    LEFT JOIN (
        SELECT nPlatform, ROUND(CONVERT(FLOAT, ISNULL(SUM(tbestellpos.nAnzahl), 0.0)), 2) AS absatz
        FROM tbestellung
        JOIN tbestellpos ON tbestellpos.tBestellung_kBestellung = tBestellung.kBestellung
        WHERE tbestellpos.tArtikel_kArtikel = @Key
            AND tBestellung.nStorno = 0 -- Stornierte Aufträge nicht beachten
            AND tbestellung.cType = 'B'
            AND tBestellung.dErstellt > DATEADD(DAY, -365, getdate())
        GROUP BY nPlatform
    ) AS jLetzte365Tage ON jLetzte365Tage.nPlatform = tPlattform.nPlattform
    LEFT JOIN (
        SELECT nPlatform, ROUND(CONVERT(FLOAT, ISNULL(SUM(tbestellpos.nAnzahl), 0.0)), 2) AS absatz
        FROM tbestellung
        JOIN tbestellpos ON tbestellpos.tBestellung_kBestellung = tBestellung.kBestellung
        WHERE tbestellpos.tArtikel_kArtikel = @Key
            AND tBestellung.nStorno = 0 -- Stornierte Aufträge nicht beachten
            AND tbestellung.cType = 'B'
        GROUP BY nPlatform
    ) AS jAbsatzGesamt ON jAbsatzGesamt.nPlatform = tPlattform.nPlattform
    LEFT JOIN (
        SELECT nPlatform, ROUND(CONVERT(FLOAT, ISNULL(AVG(tbestellpos.fVKPreis), 0.0)), 2) AS vk
        FROM tbestellpos
        JOIN tBestellung ON tbestellpos.tBestellung_kBestellung = tBestellung.kBestellung
        WHERE tbestellpos.tArtikel_kArtikel = @Key
            AND tBestellung.nStorno = 0 -- Stornierte Aufträge nicht beachten
            AND tbestellung.cType = 'B'
        GROUP BY nPlatform
    ) AS jVKDurchschnitt ON jVKDurchschnitt.nPlatform = tPlattform.nPlattform
    UNION --eBay Angebote - als Kindartikel im eBay Variationsangebot
    SELECT tShop.cName AS 'Plattform',
            ISNULL(jShop.fVerfuegbar, 0) AS 'Menge',
    		dbo.ifGetPrice(jShop.kArtikel, 0, 1, jShop.kShop, 1) AS 'Akt. Preis',
            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) 'Ø VK-Brutto',
    		jShop.cArtNr AS 'ID'
    FROM tShop
    JOIN ( --läuft er in Shops oder POS, etc.?
     SELECT	tArtikelShop.kShop,
    		tArtikelShop.kArtikel,
    		ROUND(CONVERT(FLOAT, ISNULL(vLagerbestandEx.fVerfuegbar, 0)), 2) AS fVerfuegbar,
    		tartikel.cArtNr
        FROM tartikel
    	JOIN tArtikelShop ON tArtikelShop.kArtikel = tartikel.kArtikel
    	LEFT JOIN vLagerbestandEx ON vLagerbestandEx.kArtikel = tartikel.kArtikel
        WHERE	tartikel.kArtikel = @Key
    		AND tArtikelShop.cDelInet != 'Y'
    ) AS jShop ON jShop.kShop = tShop.kShop
    LEFT JOIN (
        SELECT kShop, ROUND(CONVERT(FLOAT, ISNULL(SUM(tbestellpos.nAnzahl), 0.0)), 2) AS absatz
        FROM tbestellung
        JOIN tbestellpos ON tbestellpos.tBestellung_kBestellung = tBestellung.kBestellung
        WHERE tbestellpos.tArtikel_kArtikel = @Key
            AND tBestellung.nStorno = 0 -- Stornierte Aufträge nicht beachten
            AND tbestellung.cType = 'B'
            AND tBestellung.dErstellt > DATEADD(DAY, -30, getdate())
        GROUP BY kShop
    ) AS jLetzte30Tage ON jLetzte30Tage.kShop = tShop.kShop
    LEFT JOIN (
        SELECT kShop, ROUND(CONVERT(FLOAT, ISNULL(SUM(tbestellpos.nAnzahl), 0.0)), 2) AS absatz
        FROM tbestellung
        JOIN tbestellpos ON tbestellpos.tBestellung_kBestellung = tBestellung.kBestellung
        WHERE tbestellpos.tArtikel_kArtikel = @Key
            AND tBestellung.nStorno = 0 -- Stornierte Aufträge nicht beachten
            AND tbestellung.cType = 'B'
            AND tBestellung.dErstellt > DATEADD(DAY, -90, getdate())
        GROUP BY kShop
    ) AS jLetzte90Tage ON jLetzte90Tage.kShop = tShop.kShop
    LEFT JOIN (
        SELECT kShop, ROUND(CONVERT(FLOAT, ISNULL(SUM(tbestellpos.nAnzahl), 0.0)), 2) AS absatz
        FROM tbestellung
        JOIN tbestellpos ON tbestellpos.tBestellung_kBestellung = tBestellung.kBestellung
        WHERE tbestellpos.tArtikel_kArtikel = @Key
            AND tBestellung.nStorno = 0 -- Stornierte Aufträge nicht beachten
            AND tbestellung.cType = 'B'
            AND tBestellung.dErstellt > DATEADD(DAY, -365, getdate())
        GROUP BY kShop
    ) AS jLetzte365Tage ON jLetzte365Tage.kShop = tShop.kShop
    LEFT JOIN (
        SELECT kShop, ROUND(CONVERT(FLOAT, ISNULL(SUM(tbestellpos.nAnzahl), 0.0)), 2) AS absatz
        FROM tbestellung
        JOIN tbestellpos ON tbestellpos.tBestellung_kBestellung = tBestellung.kBestellung
        WHERE tbestellpos.tArtikel_kArtikel = @Key
            AND tBestellung.nStorno = 0 -- Stornierte Aufträge nicht beachten
            AND tbestellung.cType = 'B'
        GROUP BY kShop
    ) AS jAbsatzGesamt ON jAbsatzGesamt.kShop = tShop.kShop
    LEFT JOIN (
        SELECT kShop, ROUND(CONVERT(FLOAT, ISNULL(AVG(tbestellpos.fVKPreis), 0.0)), 2) AS vk
        FROM tbestellpos
        JOIN tBestellung ON tbestellpos.tBestellung_kBestellung = tBestellung.kBestellung
        WHERE tbestellpos.tArtikel_kArtikel = @Key
            AND tBestellung.nStorno = 0 -- Stornierte Aufträge nicht beachten
            AND tbestellung.cType = 'B'
        GROUP BY kShop
    ) AS jVKDurchschnitt ON jVKDurchschnitt.kShop = tShop.kShop

    Cross-Seller

    Hiermit sehen Sie, welche Cross-Selling-Artikel des markierten Artikels wie gut laufen. So können Sie feststellen, ob ein Cross-Seller Sinn ergibt oder besser ausgetauscht werden sollte. Folgende Informationen werden dargestellt:

    • Cross-Selling-Gruppe
    • Artikelnummer
    • Cross-Selling Artikel
    • Anzahl gemeinsame Käufe
    SELECT	tXSellGruppe.cName AS 'Cross-Selling-Gruppe'
    		, tArtikel.cArtNr AS 'Artikelnummer'
    		, tArtikelBeschreibung.cName AS 'Cross-Selling Artikel'
    		, 	(SELECT COUNT(*) FROM ( 
    				SELECT tBestellung_kBestellung FROM tbestellpos WHERE tArtikel_kArtikel = tXSell.kXSellArtikel
    					AND tXSell.kArtikel = @Key
    				INTERSECT
    				SELECT tBestellung_kBestellung FROM tbestellpos WHERE tArtikel_kArtikel = @Key
    			) AS fKaeufe) AS 'Anzahl gemeinsame Käufe'
    FROM tXSell
    JOIN dbo.tSpracheUsed ON nStandard = 1
    JOIN tXSellGruppe ON tXSellGruppe.kXSellGruppe = tXSell.kXSellGruppe
        AND tXSellGruppe.kSprache = tSpracheUsed.kSprache
    JOIN dbo.tArtikelBeschreibung ON tArtikelBeschreibung.kArtikel = tXSell.kXSellArtikel
        AND tArtikelBeschreibung.kSprache = tSpracheUsed.kSprache
        AND tArtikelBeschreibung.kPlattform=1
    JOIN tArtikel ON tArtikel.kArtikel = tXSell.kXSellArtikel
    WHERE tXSell.kArtikel = @Key
    ORDER BY tXSellGruppe.cName, tArtikelBeschreibung.cName

    FBA-Bestand

    Diese Übersicht zeigt Ihre FBA-Bestände detailliert auf, so dass Sie etwa auch den Bestand sehen, der aktuell reserviert ist. Diese Informationen werden für alle verknüpften Amazon FBA-Angebote zu dem markierten Artikel dargestellt. Folgende Informationen werden dargestellt:

    • Artikelnummer
    • Zulauf (in JTL-Wawi)
    • Wawi Verfügbar
    • Gesamt Verfügbar
    • FBA-Angebot (ja/nein)
    • FBA Verfügbar
    • FBA Warehouse (physikalischer Bestand = FBA Verfügbar + FBA Unsellable + FBA Reserved)
    • FBA Unsellable (Zustandsbedingt nicht verkaufbarer Bestand)
    • FBA Reserved (Reservierter Bestand = Menge, die derzeit kommissioniert, verpackt und versandt wird oder die für Messungen, Stichproben oder andere interne Prozesse ausgelagert wird)
    • FBA Total (Gesamtbestand = FBA Warehouse + FBA Inbound Working + FBA Inbound Shipped)
    • FBA Inbound Working (Menge, die Sie als Zulauf bei Amazon angemeldet haben)
    • FBA Inbound Shipped (Menge, die Sie als Zulauf bei Amazon angemeldet haben und für die Sie eine Tracking-ID hinterlegt haben)
    • FBA Receiving (Menge, die bei Amazon eingetroffen ist und gerade bearbeitet wird)
    SELECT tArtikel.cArtNr AS Artikelnummer
    	, ROUND(CONVERT(FLOAT, vLagerbestandEx.fZulauf), 2) AS Zulauf
    	, ROUND(CONVERT(FLOAT, vLagerbestandEx.fVerfuegbar), 2) AS 'Wawi Verfügbar'
    	, ROUND(CONVERT(FLOAT, vLagerbestandEx.fVerfuegbar + ISNULL(jAmazon.FBA_verfuegbar, 0)), 2) AS 'Gesamt Verfügbar'
    	, CASE
    		WHEN jAmazon.FBA_verfuegbar IS NULL THEN 'Nein'
    		ELSE 'Ja'
    		END AS 'FBA Angebot?'
    	, ISNULL(jAmazon.FBA_verfuegbar, 0) AS 'FBA Verfügbar'
    	, ISNULL(jAmazon.FBA_warehouse, 0) AS 'FBA Warehouse'
    	, ISNULL(jAmazon.FBA_unsellabe, 0) AS 'FBA Unsellable'
    	, ISNULL(jAmazon.FBA_reserved, 0) AS 'FBA Reserved'
    	, ISNULL(jAmazon.FBA_total, 0) AS 'FBA Total'
    	, ISNULL(jAmazon.FBA_inboundWorking, 0) AS 'FBA Inbound Working'
    	, ISNULL(jAmazon.FBA_inboundShipped, 0) AS 'FBA Inbound Shipped'
    	, ISNULL(jAmazon.FBA_receiving, 0) AS 'FBA Receiving'
    FROM tArtikel
    JOIN vLagerbestandEx ON vLagerbestandEx.kArtikel = tartikel.kArtikel
    LEFT JOIN ( 
        SELECT	pf_amazon_angebot_mapping.kArtikel,
    			SUM(pf_amazon_angebot_fba.nQuantity) AS FBA_verfuegbar,
    			SUM(pf_amazon_angebot_fba.nQtyWarehouse) AS FBA_warehouse,
    			SUM(pf_amazon_angebot_fba.nQtyUnsellable) AS FBA_unsellabe,
    			SUM(pf_amazon_angebot_fba.nQtyReserved) AS FBA_reserved,
    			SUM(pf_amazon_angebot_fba.nQtyTotal) AS FBA_total,
    			SUM(pf_amazon_angebot_fba.nQtyInboundWorking) AS FBA_inboundWorking,
    			SUM(pf_amazon_angebot_fba.nQtyInboundShipped) AS FBA_inboundShipped,
    			SUM(pf_amazon_angebot_fba.nQtyReceiving) AS FBA_receiving
        FROM pf_amazon_angebot_mapping
    	JOIN pf_amazon_angebot_fba ON pf_amazon_angebot_mapping.cSellerSKU = pf_amazon_angebot_fba.cSellerSKU
    		AND pf_amazon_angebot_mapping.kUser = pf_amazon_angebot_fba.kUser
        WHERE pf_amazon_angebot_mapping.kArtikel = @Key
    	GROUP BY pf_amazon_angebot_mapping.kArtikel
    	) AS jAmazon ON jAmazon.kArtikel = tArtikel.kArtikel
    WHERE tArtikel.kArtikel = @Key
    

    Kategoriepfade

    Auf einen Blick sehen Sie alle Kategoriepfade des markierten Artikels. Folgende Informationen werden dargestellt:

    • Kategoriepfad
    • Kategorietiefe
    WITH kategorien AS
    ( 
    	SELECT dbo.tkategorie.kKategorie, dbo.tkategorie.kOberKategorie, 1 AS Tiefe, CAST(tKategorieSprache.cName AS varchar(500)) AS Kategoriepfad
    	FROM dbo.tkategorie
    	JOIN dbo.tSpracheUsed ON nStandard = 1
    	JOIN dbo.tKategorieSprache ON tKategorieSprache.kKategorie = tkategorie.kKategorie
    		AND tKategorieSprache.kSprache = tSpracheUsed.kSprache
    	JOIN tkategorieartikel ON tkategorieartikel.kKategorie = tkategorie.kKategorie
    	WHERE dbo.tkategorieartikel.kArtikel  = @Key
    	UNION ALL
    	SELECT dbo.tkategorie.kKategorie, dbo.tkategorie.kOberKategorie, Tiefe +1, CAST(tKategorieSprache.cName + ' -> ' + kategorien.Kategoriepfad AS varchar(500))  AS Kategoriepfad
    	FROM dbo.tkategorie
    	JOIN dbo.tSpracheUsed ON nStandard = 1
    	JOIN dbo.tKategorieSprache ON tKategorieSprache.kKategorie = tkategorie.kKategorie
    		AND tKategorieSprache.kSprache = tSpracheUsed.kSprache
    	JOIN kategorien ON dbo.tkategorie.kKategorie = kategorien.kOberKategorie
    )
    SELECT Kategoriepfad
    	, Tiefe AS Kategorietiefe
    FROM kategorien
    WHERE kOberKategorie = 0
    GROUP BY Kategoriepfad, Tiefe

    Komplexe Artikel-KPIs

    Eine mächtige Übersicht bzgl. Zulauf, Lagerreichweite, Absatz und Retouren. Variationskombinationen sowie Stücklisten werden komponentenweise und zusätzlich aggregiert dargestellt. Folgende Informationen werden dargestellt:

    • Artikeltyp
    • Artikelnummer
    • Artikelname
    • Verfügbar
    • Zulauf
    • Lagerreichweite
    • Absatz in den letzten 30 Tagen
    • Absatz in den letzten 90 Tagen
    • Absatz in den letzten 365 Tagen
    • Absatz Gesamt
    • Durchschn. VK-Brutto
    • Retourenquote
    • Abverkaufsquote (auf Monatssicht)
    -- 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
    

    Retourenübersicht

    Informationen rund um das Retourenverhalten des markierten Artikels. Folgende Informationen werden dargestellt:

    • Plattform
    • Akt. Monat
    • Vormonat
    • Letzte 30 Tage
    • Letzte 3 Monate
    • Akt. Jahr
    • Letzte 365 Tage
    • Vorjahr
    • Gesamt
    • Retourenquote
    SELECT    tPlattform.cName AS 'Plattform',
            ISNULL(jAktMonat.rm, 0) AS 'Akt. Monat',
            ISNULL(jVorMonat.rm, 0) AS 'Vormonat',
            ISNULL(jLetzte30Tage.rm, 0) AS 'Letzte 30 Tage',
            ISNULL(jLetzte3Monate.rm, 0) AS 'Letzte 3 Monate',      
            ISNULL(jAktJahr.rm, 0) AS 'Akt. Jahr',
            ISNULL(jLetzte365Tage.rm, 0) AS 'Letzte 365 Tage',
            ISNULL(jVorjahr.rm, 0) AS 'Vorjahr',
            ISNULL(jGesamt.rm, 0) AS 'Gesamt',
            ISNULL(jRetourenGesamt.Retourenquote, '0%') AS 'Retourenquote'
    FROM tPlattform
    LEFT JOIN (
        SELECT    nPlatform,
                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
        WHERE    tRMRetourePos.kArtikel = 511
                AND YEAR(tRMRetoure.dErstellt) = YEAR(getdate())
                AND MONTH(tRMRetoure.dErstellt) = MONTH(getdate())
        GROUP BY nPlatform
    ) as jAktMonat on jAktMonat.nPlatform = tPlattform.nPlattform
    LEFT JOIN (
        SELECT    50 AS nPlatform, --Plattform = Amazon
                ROUND(CONVERT(FLOAT, ISNULL(SUM(pf_amazon_retourpos.nMenge), 0.0)), 2) AS rm
        FROM pf_amazon_angebot_mapping
    	JOIN pf_amazon_retourpos ON pf_amazon_retourpos.cSellerSKU = pf_amazon_angebot_mapping.cSellerSKU 
        WHERE    pf_amazon_angebot_mapping.kArtikel = 511
                AND YEAR(pf_amazon_retourpos.dRetourzeit) = YEAR(getdate())
                AND MONTH(pf_amazon_retourpos.dRetourzeit) = MONTH(getdate())
    ) as jAktMonatFBA on jAktMonatFBA.nPlatform = tPlattform.nPlattform
    LEFT JOIN (
        SELECT    nPlatform,
                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
        WHERE    tRMRetourePos.kArtikel = 511
                AND YEAR(tRMRetoure.dErstellt) = YEAR(DATEADD(MONTH, -1, getdate()))
                AND MONTH(tRMRetoure.dErstellt) = MONTH(DATEADD(MONTH, -1, getdate()))
        GROUP BY nPlatform
    ) as jVorMonat on jVorMonat.nPlatform = tPlattform.nPlattform
    LEFT JOIN (
        SELECT    50 AS nPlatform, --Plattform = Amazon
                ROUND(CONVERT(FLOAT, ISNULL(SUM(pf_amazon_retourpos.nMenge), 0.0)), 2) AS rm
        FROM pf_amazon_angebot_mapping
    	JOIN pf_amazon_retourpos ON pf_amazon_retourpos.cSellerSKU = pf_amazon_angebot_mapping.cSellerSKU 
        WHERE    pf_amazon_angebot_mapping.kArtikel = 511
                AND YEAR(pf_amazon_retourpos.dRetourzeit) = YEAR(DATEADD(MONTH, -1, getdate()))
                AND MONTH(pf_amazon_retourpos.dRetourzeit) = MONTH(DATEADD(MONTH, -1, getdate()))
    ) as jVorMonatFBA on jVorMonatFBA.nPlatform = tPlattform.nPlattform
    LEFT JOIN (
        SELECT    nPlatform,
                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
        WHERE    tRMRetourePos.kArtikel = 511
                AND tRMRetoure.dErstellt > DATEADD(DAY, -30, getdate())
        GROUP BY nPlatform
    ) as jLetzte30Tage on jLetzte30Tage.nPlatform = tPlattform.nPlattform
    LEFT JOIN (
        SELECT    50 AS nPlatform, --Plattform = Amazon
                ROUND(CONVERT(FLOAT, ISNULL(SUM(pf_amazon_retourpos.nMenge), 0.0)), 2) AS rm
        FROM pf_amazon_angebot_mapping
    	JOIN pf_amazon_retourpos ON pf_amazon_retourpos.cSellerSKU = pf_amazon_angebot_mapping.cSellerSKU 
        WHERE    pf_amazon_angebot_mapping.kArtikel = 511
    			AND pf_amazon_retourpos.dRetourzeit > DATEADD(DAY, -30, getdate())
    ) as jLetzte30TageFBA on jLetzte30TageFBA.nPlatform = tPlattform.nPlattform
    LEFT JOIN (
        SELECT    nPlatform,
                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
        WHERE    tRMRetourePos.kArtikel = 511
                AND tRMRetoure.dErstellt > DATEADD(MONTH, -3, getdate())
        GROUP BY nPlatform
    ) as jLetzte3Monate on jLetzte3Monate.nPlatform = tPlattform.nPlattform
    LEFT JOIN (
        SELECT    50 AS nPlatform, --Plattform = Amazon
                ROUND(CONVERT(FLOAT, ISNULL(SUM(pf_amazon_retourpos.nMenge), 0.0)), 2) AS rm
        FROM pf_amazon_angebot_mapping
    	JOIN pf_amazon_retourpos ON pf_amazon_retourpos.cSellerSKU = pf_amazon_angebot_mapping.cSellerSKU 
        WHERE    pf_amazon_angebot_mapping.kArtikel = 511
    			AND pf_amazon_retourpos.dRetourzeit > DATEADD(MONTH, -3, getdate())
    ) as jLetzte3MonateFBA on jLetzte3MonateFBA.nPlatform = tPlattform.nPlattform
    LEFT JOIN (
        SELECT    nPlatform,
                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
        WHERE    tRMRetourePos.kArtikel = 511
                AND YEAR(tRMRetoure.dErstellt) = YEAR(getdate())
        GROUP BY nPlatform
    ) as jAktJahr on jAktJahr.nPlatform = tPlattform.nPlattform
    LEFT JOIN (
        SELECT    50 AS nPlatform, --Plattform = Amazon
                ROUND(CONVERT(FLOAT, ISNULL(SUM(pf_amazon_retourpos.nMenge), 0.0)), 2) AS rm
        FROM pf_amazon_angebot_mapping
    	JOIN pf_amazon_retourpos ON pf_amazon_retourpos.cSellerSKU = pf_amazon_angebot_mapping.cSellerSKU 
        WHERE    pf_amazon_angebot_mapping.kArtikel = 511
    			AND YEAR(pf_amazon_retourpos.dRetourzeit) = YEAR(getdate())
    ) as jAktJahrFBA on jAktJahrFBA.nPlatform = tPlattform.nPlattform
    LEFT JOIN (
        SELECT    nPlatform,
                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
        WHERE    tRMRetourePos.kArtikel = 511
                AND tRMRetoure.dErstellt > DATEADD(DAY, -365, getdate())
        GROUP BY nPlatform
    ) as jLetzte365Tage on jLetzte365Tage.nPlatform = tPlattform.nPlattform
    LEFT JOIN (
        SELECT    50 AS nPlatform, --Plattform = Amazon
                ROUND(CONVERT(FLOAT, ISNULL(SUM(pf_amazon_retourpos.nMenge), 0.0)), 2) AS rm
        FROM pf_amazon_angebot_mapping
    	JOIN pf_amazon_retourpos ON pf_amazon_retourpos.cSellerSKU = pf_amazon_angebot_mapping.cSellerSKU 
        WHERE    pf_amazon_angebot_mapping.kArtikel = 511
    			AND pf_amazon_retourpos.dRetourzeit > DATEADD(DAY, -365, getdate())
    ) as jLetzte365TageFBA on jLetzte365TageFBA.nPlatform = tPlattform.nPlattform
    LEFT JOIN (
        SELECT    nPlatform,
                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
        WHERE    tRMRetourePos.kArtikel = 511
                AND YEAR(tRMRetoure.dErstellt) = YEAR(DATEADD(YEAR, -1, getdate()))
        GROUP BY nPlatform
    ) as jVorjahr on jVorjahr.nPlatform = tPlattform.nPlattform
    LEFT JOIN (
        SELECT    50 AS nPlatform, --Plattform = Amazon
                ROUND(CONVERT(FLOAT, ISNULL(SUM(pf_amazon_retourpos.nMenge), 0.0)), 2) AS rm
        FROM pf_amazon_angebot_mapping
    	JOIN pf_amazon_retourpos ON pf_amazon_retourpos.cSellerSKU = pf_amazon_angebot_mapping.cSellerSKU 
        WHERE    pf_amazon_angebot_mapping.kArtikel = 511
    			AND YEAR(pf_amazon_retourpos.dRetourzeit) = YEAR(DATEADD(YEAR, -1, getdate()))
    ) as jVorjahrFBA on jVorjahrFBA.nPlatform = tPlattform.nPlattform
    LEFT JOIN (
        SELECT    nPlatform,
                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
        WHERE    tRMRetourePos.kArtikel = 511
        GROUP BY nPlatform
    ) as jGesamt on jGesamt.nPlatform = tPlattform.nPlattform
    LEFT JOIN (
        SELECT    50 AS nPlatform, --Plattform = Amazon
                ROUND(CONVERT(FLOAT, ISNULL(SUM(pf_amazon_retourpos.nMenge), 0.0)), 2) AS rm
        FROM pf_amazon_angebot_mapping
    	JOIN pf_amazon_retourpos ON pf_amazon_retourpos.cSellerSKU = pf_amazon_angebot_mapping.cSellerSKU 
        WHERE    pf_amazon_angebot_mapping.kArtikel = 511
    ) as jGesamtFBA on jGesamtFBA.nPlatform = tPlattform.nPlattform
    LEFT JOIN (
    	SELECT jabsatzgesamt.nPlatform, 
            CONCAT((ISNULL(retourengesamt.rm, 0.0)/jabsatzgesamt.absatz)*100, '%') as Retourenquote
    	FROM (
    		SELECT tbestellung.nPlatform,
    		ROUND(CONVERT(FLOAT, ISNULL(SUM(tbestellpos.nAnzahl), 0.0)), 2) AS absatz
    		FROM tbestellung
    		JOIN tbestellpos ON tbestellpos.tBestellung_kBestellung = tBestellung.kBestellung
    		WHERE tbestellpos.tArtikel_kArtikel = 511
    			AND tbestellung.cType = 'B'
    			AND tBestellung.nStorno = 0 -- Stornierte Aufträge nicht beachten
    		GROUP BY nPlatform) AS jabsatzgesamt
    		LEFT JOIN (
    			SELECT nPlatform,
    			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
    			WHERE    tRMRetourePos.kArtikel = 511
    			GROUP BY nPlatform) AS retourengesamt on retourengesamt.nPlatform=jabsatzgesamt.nPlatform
    	) as jRetourenGesamt on jRetourenGesamt.nPlatform = tPlattform.nPlattform
    	/* todo - nur fba bestellunegn zusammenzählen
    LEFT JOIN (
    	SELECT jabsatzgesamt.nPlatform, 
            CONCAT((ISNULL(jGesamtFBA.rm, 0.0)/jabsatzgesamt.absatz)*100, '%') as Retourenquote
    	FROM (
    		SELECT tbestellung.nPlatform,
    		ROUND(CONVERT(FLOAT, ISNULL(SUM(tbestellpos.nAnzahl), 0.0)), 2) AS absatz
    		FROM tbestellung
    		JOIN tbestellpos ON tbestellpos.tBestellung_kBestellung = tBestellung.kBestellung
    		WHERE tbestellpos.tArtikel_kArtikel = 511
    			AND tbestellung.cType = 'B'
    			AND tBestellung.nStorno = 0 -- Stornierte Aufträge nicht beachten
    		GROUP BY nPlatform) AS jabsatzgesamt
    		LEFT JOIN (
    			SELECT    50 AS nPlatform, --Plattform = Amazon
    					ROUND(CONVERT(FLOAT, ISNULL(SUM(pf_amazon_retourpos.nMenge), 0.0)), 2) AS rm
    			FROM pf_amazon_angebot_mapping
    			JOIN pf_amazon_retourpos ON pf_amazon_retourpos.cSellerSKU = pf_amazon_angebot_mapping.cSellerSKU 
    			WHERE    pf_amazon_angebot_mapping.kArtikel = 511
    		) as jGesamtFBA on 1 = 1
    	) as jRetourenGesamtFBA on jRetourenGesamtFBA.nPlatform = tPlattform.nPlattform
    	*/ 
    UNION
    SELECT 'Alle Plattformen' AS 'Plattform',
        (SELECT 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
        WHERE    tRMRetourePos.kArtikel = 511
                AND YEAR(tRMRetoure.dErstellt) = YEAR(getdate())
                AND MONTH(tRMRetoure.dErstellt) = MONTH(getdate())) as 'Akt. Monat',
        (SELECT 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
        WHERE    tRMRetourePos.kArtikel = 511
                AND YEAR(tRMRetoure.dErstellt) = YEAR(DATEADD(MONTH, -1, getdate()))
                AND MONTH(tRMRetoure.dErstellt) = MONTH(DATEADD(MONTH, -1, getdate()))) as 'Vormonat',
        (SELECT 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
        WHERE    tRMRetourePos.kArtikel = 511
        AND tRMRetoure.dErstellt > DATEADD(DAY, -30, getdate())) as 'Letzte 30 Tage',
        (SELECT 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
        WHERE    tRMRetourePos.kArtikel = 511
        AND tRMRetoure.dErstellt > DATEADD(MONTH, -3, getdate())) as 'Letzte 3 Monate',
        (SELECT 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
        WHERE    tRMRetourePos.kArtikel = 511
        AND YEAR(tRMRetoure.dErstellt) = YEAR(getdate())) as 'Akt. Jahr',
        (SELECT 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
        WHERE    tRMRetourePos.kArtikel = 511
        AND tRMRetoure.dErstellt > DATEADD(DAY, -365, getdate())) as 'Letzte 365 Tage',
        (SELECT 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
        WHERE    tRMRetourePos.kArtikel = 511
        AND YEAR(tRMRetoure.dErstellt) = YEAR(DATEADD(YEAR, -1, getdate()))) as 'Vorjahr',
        (SELECT 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
        WHERE    tRMRetourePos.kArtikel = 511) as 'Gesamt',
        (SELECT CONCAT(ROUND((retourengesamt.rm/jabsatzgesamt.absatz)*100, 2), '%') as Retourenquote
    FROM
    (SELECT 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
        WHERE    tRMRetourePos.kArtikel = 511) AS retourengesamt
    JOIN 
        (SELECT ROUND(CONVERT(FLOAT, ISNULL(SUM(tbestellpos.nAnzahl), 0.0)), 2) AS absatz
        FROM tbestellung
        JOIN tbestellpos ON tbestellpos.tBestellung_kBestellung = tBestellung.kBestellung
        WHERE tbestellpos.tArtikel_kArtikel = 511
            AND tbestellung.cType = 'B') AS jabsatzgesamt on 1=1) AS Retourenquote
    ORDER BY Plattform

    Verkäufe pro Plattform

    Diese Übersicht gibt Ihnen Aufschluss darüber, über welchen Vertriebsweg der markierte Artikel wie gut läuft. Es werden auch Marktplätze über Drittanbindungen, Shopsysteme und POS-Kassen berücksichtigt. Folgende Informationen werden dargestellt:

    • Plattform
    • Heute
    • Gestern
    • Akt. Monat
    • Vormonat
    • Letzte 30 Tage
    • Letzte 3 Monate
    • Akt. Jahr
    • Letzte 365 Tage
    • Vorjahr
    • Gesamt
    SELECT tPlattform.cName AS 'Plattform',
            ISNULL(jAktTag.absatz, 0) AS 'Heute',
            ISNULL(jGestern .absatz, 0) AS 'Gestern',  
            ISNULL(jAktMonat.absatz, 0) AS 'Akt. Monat',
            ISNULL(jVorMonat.absatz, 0) AS 'Vormonat',
            ISNULL(jLetzte30Tage.absatz, 0) AS 'Letzte 30 Tage',
            ISNULL(jLetzte3Monate.absatz, 0) AS 'Letzte 3 Monate',  
            ISNULL(jAktJahr.absatz, 0) AS 'Akt. Jahr',
            ISNULL(jLetzte365Tage.absatz, 0) AS 'Letzte 365 Tage',
            ISNULL(jVorjahr.absatz, 0) AS 'Vorjahr',
            ISNULL(jGesamt.absatz, 0) AS 'Gesamt',
            ISNULL(jVKDurchschnitt.vknetto, 0) 'Ø VK-Netto',
            ISNULL(jRetourenGesamt.Retourenquote, '0%') AS 'Retourenquote'
    FROM tPlattform
    LEFT JOIN (
        SELECT nPlatform, ROUND(CONVERT(FLOAT, ISNULL(SUM(tbestellpos.nAnzahl), 0.0)), 2) AS absatz
        FROM tbestellung
        JOIN tbestellpos ON tbestellpos.tBestellung_kBestellung = tBestellung.kBestellung
        WHERE tbestellpos.tArtikel_kArtikel = @Key
            AND tbestellung.cType = 'B'
            AND tBestellung.nStorno = 0 -- Stornierte Aufträge nicht beachten
            AND YEAR(tBestellung.dErstellt) = YEAR(getdate())
            AND MONTH(tBestellung.dErstellt) = MONTH(getdate())
            AND DAY(tBestellung.dErstellt) = DAY(getdate())
        GROUP BY nPlatform
    ) AS jAktTag ON jAktTag.nPlatform = tPlattform.nPlattform
    LEFT JOIN (
        SELECT nPlatform, ROUND(CONVERT(FLOAT, ISNULL(SUM(tbestellpos.nAnzahl), 0.0)), 2) AS absatz
        FROM tbestellung
        JOIN tbestellpos ON tbestellpos.tBestellung_kBestellung = tBestellung.kBestellung
        WHERE tbestellpos.tArtikel_kArtikel = @Key
            AND tbestellung.cType = 'B'
            AND tBestellung.nStorno = 0 -- Stornierte Aufträge nicht beachten
            AND YEAR(tBestellung.dErstellt) = YEAR(DATEADD(DAY, -1, getdate()))
            AND MONTH(tBestellung.dErstellt) = MONTH(DATEADD(DAY, -1, getdate()))
            AND DAY(tBestellung.dErstellt) = DAY(DATEADD(DAY, -1, getdate()))
        GROUP BY nPlatform
    ) AS jGestern ON jGestern.nPlatform = tPlattform.nPlattform
    LEFT JOIN (
        SELECT nPlatform, ROUND(CONVERT(FLOAT, ISNULL(SUM(tbestellpos.nAnzahl), 0.0)), 2) AS absatz
        FROM tbestellung
        JOIN tbestellpos ON tbestellpos.tBestellung_kBestellung = tBestellung.kBestellung
        WHERE tbestellpos.tArtikel_kArtikel = @Key
            AND tbestellung.cType = 'B'
            AND tBestellung.nStorno = 0 -- Stornierte Aufträge nicht beachten
            AND YEAR(tBestellung.dErstellt) = YEAR(getdate())
            AND MONTH(tBestellung.dErstellt) = MONTH(getdate())
        GROUP BY nPlatform
    ) AS jAktMonat ON jAktMonat.nPlatform = tPlattform.nPlattform
    LEFT JOIN (
        SELECT nPlatform, ROUND(CONVERT(FLOAT, ISNULL(SUM(tbestellpos.nAnzahl), 0.0)), 2) AS absatz
        FROM tbestellung
        JOIN tbestellpos ON tbestellpos.tBestellung_kBestellung = tBestellung.kBestellung
        WHERE tbestellpos.tArtikel_kArtikel = @Key
            AND tbestellung.cType = 'B'
            AND tBestellung.nStorno = 0 -- Stornierte Aufträge nicht beachten
            AND YEAR(tBestellung.dErstellt) = YEAR(DATEADD(MONTH, -1, getdate()))
            AND MONTH(tBestellung.dErstellt) = MONTH(DATEADD(MONTH, -1, getdate()))
        GROUP BY nPlatform
    ) AS jVorMonat ON jVorMonat.nPlatform = tPlattform.nPlattform
    LEFT JOIN (
        SELECT nPlatform, ROUND(CONVERT(FLOAT, ISNULL(SUM(tbestellpos.nAnzahl), 0.0)), 2) AS absatz
        FROM tbestellung
        JOIN tbestellpos ON tbestellpos.tBestellung_kBestellung = tBestellung.kBestellung
        WHERE tbestellpos.tArtikel_kArtikel = @Key
            AND tBestellung.nStorno = 0 -- Stornierte Aufträge nicht beachten
            AND tbestellung.cType = 'B'
            AND tBestellung.dErstellt > DATEADD(DAY, -30, getdate())
        GROUP BY nPlatform
    ) AS jLetzte30Tage ON jLetzte30Tage.nPlatform = tPlattform.nPlattform
    LEFT JOIN (
        SELECT nPlatform, ROUND(CONVERT(FLOAT, ISNULL(SUM(tbestellpos.nAnzahl), 0.0)), 2) AS absatz
        FROM tbestellung
        JOIN tbestellpos ON tbestellpos.tBestellung_kBestellung = tBestellung.kBestellung
        WHERE tbestellpos.tArtikel_kArtikel = @Key
            AND tBestellung.nStorno = 0 -- Stornierte Aufträge nicht beachten
            AND tbestellung.cType = 'B'
            AND tBestellung.dErstellt > DATEADD(MONTH, -3, getdate())
        GROUP BY nPlatform
    ) AS jLetzte3Monate ON jLetzte3Monate.nPlatform = tPlattform.nPlattform
    LEFT JOIN (
        SELECT nPlatform, ROUND(CONVERT(FLOAT, ISNULL(SUM(tbestellpos.nAnzahl), 0.0)), 2) AS absatz
        FROM tbestellung
        JOIN tbestellpos ON tbestellpos.tBestellung_kBestellung = tBestellung.kBestellung
        WHERE tbestellpos.tArtikel_kArtikel = @Key
            AND tBestellung.nStorno = 0 -- Stornierte Aufträge nicht beachten
            AND tbestellung.cType = 'B'
            AND YEAR(tBestellung.dErstellt) = YEAR(getdate())
        GROUP BY nPlatform
    ) AS jAktJahr ON jAktJahr.nPlatform = tPlattform.nPlattform
    LEFT JOIN (
        SELECT nPlatform, ROUND(CONVERT(FLOAT, ISNULL(SUM(tbestellpos.nAnzahl), 0.0)), 2) AS absatz
        FROM tbestellung
        JOIN tbestellpos ON tbestellpos.tBestellung_kBestellung = tBestellung.kBestellung
        WHERE tbestellpos.tArtikel_kArtikel = @Key
            AND tBestellung.nStorno = 0 -- Stornierte Aufträge nicht beachten
            AND tbestellung.cType = 'B'
            AND tBestellung.dErstellt > DATEADD(DAY, -365, getdate())
        GROUP BY nPlatform
    ) AS jLetzte365Tage ON jLetzte365Tage.nPlatform = tPlattform.nPlattform
    LEFT JOIN (
        SELECT nPlatform, ROUND(CONVERT(FLOAT, ISNULL(SUM(tbestellpos.nAnzahl), 0.0)), 2) AS absatz
        FROM tbestellung
        JOIN tbestellpos ON tbestellpos.tBestellung_kBestellung = tBestellung.kBestellung
        WHERE tbestellpos.tArtikel_kArtikel = @Key
            AND tBestellung.nStorno = 0 -- Stornierte Aufträge nicht beachten
            AND tbestellung.cType = 'B'
            AND YEAR(tBestellung.dErstellt) = YEAR(DATEADD(YEAR, -1, getdate()))
        GROUP BY nPlatform
    ) AS jVorjahr ON jVorjahr.nPlatform = tPlattform.nPlattform
    JOIN (
        SELECT nPlatform, ROUND(CONVERT(FLOAT, ISNULL(SUM(tbestellpos.nAnzahl), 0.0)), 2) AS absatz
        FROM tbestellung
        JOIN tbestellpos ON tbestellpos.tBestellung_kBestellung = tBestellung.kBestellung
        WHERE tbestellpos.tArtikel_kArtikel = @Key
            AND tBestellung.nStorno = 0 -- Stornierte Aufträge nicht beachten
            AND tbestellung.cType = 'B'
        GROUP BY nPlatform
    ) AS jGesamt ON jGesamt.nPlatform = tPlattform.nPlattform
    JOIN (
        SELECT nPlatform, ROUND(CONVERT(FLOAT, ISNULL(AVG(tbestellpos.fVKNetto / tBestellung.fFaktor), 0.0)), 2) AS vknetto -- für Brutto 'fVKNetto' durch 'fVKPreis' ersetzen
        FROM tbestellpos
        JOIN tBestellung ON tbestellpos.tBestellung_kBestellung = tBestellung.kBestellung
        WHERE tbestellpos.tArtikel_kArtikel = @Key
            AND tBestellung.nStorno = 0 -- Stornierte Aufträge nicht beachten
            AND tbestellung.cType = 'B'
        GROUP BY nPlatform
    ) AS jVKDurchschnitt ON jVKDurchschnitt.nPlatform = tPlattform.nPlattform
    LEFT JOIN (
    SELECT jabsatzgesamt.nPlatform, 
            CONCAT((CASE WHEN jabsatzgesamt.absatz > 0.0 THEN ISNULL(retourengesamt.rm, 0.0) / jabsatzgesamt.absatz ELSE 0.0 END)*100, '%') as Retourenquote
    FROM
    (SELECT tbestellung.nPlatform,
        ROUND(CONVERT(FLOAT, ISNULL(SUM(tbestellpos.nAnzahl), 0.0)), 2) AS absatz
        FROM tbestellung
        JOIN tbestellpos ON tbestellpos.tBestellung_kBestellung = tBestellung.kBestellung
        WHERE tbestellpos.tArtikel_kArtikel = @Key
            AND tbestellung.cType = 'B'
      AND tBestellung.nStorno = 0 -- Stornierte Aufträge nicht beachten
        GROUP BY nPlatform) AS jabsatzgesamt
    LEFT JOIN 
        (SELECT nPlatform,
      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
        WHERE    tRMRetourePos.kArtikel = @Key
        GROUP BY nPlatform) AS retourengesamt on retourengesamt.nPlatform=jabsatzgesamt.nPlatform) 
            as jRetourenGesamt on jRetourenGesamt.nPlatform = tPlattform.nPlattform
    UNION
    SELECT 'Alle Plattformen' AS 'Plattform',
        (SELECT ROUND(CONVERT(FLOAT, ISNULL(SUM(tbestellpos.nAnzahl), 0.0)), 2) AS absatz
        FROM tbestellung
        JOIN tbestellpos ON tbestellpos.tBestellung_kBestellung = tBestellung.kBestellung
        WHERE tbestellpos.tArtikel_kArtikel = @Key
            AND tBestellung.nStorno = 0 -- Stornierte Aufträge nicht beachten
            AND tbestellung.cType = 'B'
            AND YEAR(tBestellung.dErstellt) = YEAR(getdate())
            AND MONTH(tBestellung.dErstellt) = MONTH(getdate())
            AND DAY(tBestellung.dErstellt) = DAY(getdate())) AS 'Heute',
        (SELECT ROUND(CONVERT(FLOAT, ISNULL(SUM(tbestellpos.nAnzahl), 0.0)), 2) AS absatz
        FROM tbestellung
        JOIN tbestellpos ON tbestellpos.tBestellung_kBestellung = tBestellung.kBestellung
        WHERE tbestellpos.tArtikel_kArtikel = @Key
            AND tBestellung.nStorno = 0 -- Stornierte Aufträge nicht beachten
            AND tbestellung.cType = 'B'
            AND YEAR(tBestellung.dErstellt) = YEAR(DATEADD(DAY, -1, getdate()))
            AND MONTH(tBestellung.dErstellt) = MONTH(DATEADD(DAY, -1, getdate()))
            AND DAY(tBestellung.dErstellt) = DAY(DATEADD(DAY, -1, getdate()))) AS 'Gestern',
        (SELECT ROUND(CONVERT(FLOAT, ISNULL(SUM(tbestellpos.nAnzahl), 0.0)), 2) AS absatz
        FROM tbestellung
        JOIN tbestellpos ON tbestellpos.tBestellung_kBestellung = tBestellung.kBestellung
        WHERE tbestellpos.tArtikel_kArtikel = @Key
            AND tBestellung.nStorno = 0 -- Stornierte Aufträge nicht beachten
            AND tbestellung.cType = 'B'
            AND YEAR(tBestellung.dErstellt) = YEAR(getdate())
            AND MONTH(tBestellung.dErstellt) = MONTH(getdate())) AS 'Akt. Monat',
        (SELECT ROUND(CONVERT(FLOAT, ISNULL(SUM(tbestellpos.nAnzahl), 0.0)), 2) AS absatz
        FROM tbestellung
        JOIN tbestellpos ON tbestellpos.tBestellung_kBestellung = tBestellung.kBestellung
        WHERE tbestellpos.tArtikel_kArtikel = @Key
            AND tBestellung.nStorno = 0 -- Stornierte Aufträge nicht beachten
            AND tbestellung.cType = 'B'
            AND YEAR(tBestellung.dErstellt) = YEAR(DATEADD(MONTH, -1, getdate()))
            AND MONTH(tBestellung.dErstellt) = MONTH(DATEADD(MONTH, -1, getdate()))) AS 'Vormonat',
        (SELECT ROUND(CONVERT(FLOAT, ISNULL(SUM(tbestellpos.nAnzahl), 0.0)), 2) AS absatz
        FROM tbestellung
        JOIN tbestellpos ON tbestellpos.tBestellung_kBestellung = tBestellung.kBestellung
        WHERE tbestellpos.tArtikel_kArtikel = @Key
            AND tBestellung.nStorno = 0 -- Stornierte Aufträge nicht beachten
            AND tbestellung.cType = 'B'
            AND tBestellung.dErstellt > DATEADD(DAY, -30, getdate())) AS 'Letzte 30 Tage',
        (SELECT ROUND(CONVERT(FLOAT, ISNULL(SUM(tbestellpos.nAnzahl), 0.0)), 2) AS absatz
        FROM tbestellung
        JOIN tbestellpos ON tbestellpos.tBestellung_kBestellung = tBestellung.kBestellung
        WHERE tbestellpos.tArtikel_kArtikel = @Key
            AND tbestellung.cType = 'B'
            AND tBestellung.nStorno = 0 -- Stornierte Aufträge nicht beachten
            AND tBestellung.dErstellt > DATEADD(MONTH, -3, getdate())) AS 'Letzte 3 Monate',
        (SELECT ROUND(CONVERT(FLOAT, ISNULL(SUM(tbestellpos.nAnzahl), 0.0)), 2) AS absatz
        FROM tbestellung
        JOIN tbestellpos ON tbestellpos.tBestellung_kBestellung = tBestellung.kBestellung
        WHERE tbestellpos.tArtikel_kArtikel = @Key
            AND tbestellung.cType = 'B'
            AND tBestellung.nStorno = 0 -- Stornierte Aufträge nicht beachten
            AND YEAR(tBestellung.dErstellt) = YEAR(getdate())) AS 'Akt. Jahr',
        (SELECT ROUND(CONVERT(FLOAT, ISNULL(SUM(tbestellpos.nAnzahl), 0.0)), 2) AS absatz
        FROM tbestellung
        JOIN tbestellpos ON tbestellpos.tBestellung_kBestellung = tBestellung.kBestellung
        WHERE tbestellpos.tArtikel_kArtikel = @Key
            AND tbestellung.cType = 'B'
            AND tBestellung.nStorno = 0 -- Stornierte Aufträge nicht beachten
            AND tBestellung.dErstellt > DATEADD(DAY, -365, getdate())) AS 'Letzte 365 Tage',
        (SELECT ROUND(CONVERT(FLOAT, ISNULL(SUM(tbestellpos.nAnzahl), 0.0)), 2) AS absatz
        FROM tbestellung
        JOIN tbestellpos ON tbestellpos.tBestellung_kBestellung = tBestellung.kBestellung
        WHERE tbestellpos.tArtikel_kArtikel = @Key
            AND tbestellung.cType = 'B'
            AND tBestellung.nStorno = 0 -- Stornierte Aufträge nicht beachten
            AND YEAR(tBestellung.dErstellt) = YEAR(DATEADD(YEAR, -1, getdate()))) AS 'Vorjahr',
        (SELECT ROUND(CONVERT(FLOAT, ISNULL(SUM(tbestellpos.nAnzahl), 0.0)), 2) AS absatz
        FROM tbestellung
        JOIN tbestellpos ON tbestellpos.tBestellung_kBestellung = tBestellung.kBestellung
        WHERE tbestellpos.tArtikel_kArtikel = @Key
            AND tbestellung.cType = 'B'
            AND tBestellung.nStorno = 0 -- Stornierte Aufträge nicht beachten
        ) AS 'Gesamt',
        (SELECT ROUND(CONVERT(FLOAT, ISNULL(AVG(tbestellpos.fVKNetto / tBestellung.fFaktor), 0.0)), 2) AS vknetto -- für Brutto 'fVKNetto' durch 'fVKPreis' ersetzen
        FROM tbestellpos
        JOIN tBestellung ON tBestellung.kBestellung = tbestellpos.tBestellung_kBestellung
        WHERE tbestellpos.tArtikel_kArtikel = @Key
            AND tbestellung.cType = 'B'
            AND tBestellung.nStorno = 0 -- Stornierte Aufträge nicht beachten
        ) AS 'Ø VK-Netto',
    (SELECT CONCAT(ROUND((CASE WHEN jabsatzgesamt.absatz > 0.0 THEN retourengesamt.rm / jabsatzgesamt.absatz ELSE 0.0 END)*100, 2), '%') as Retourenquote
    FROM
    (SELECT 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
        WHERE    tRMRetourePos.kArtikel = @Key) AS retourengesamt
    JOIN 
        (SELECT ROUND(CONVERT(FLOAT, ISNULL(SUM(tbestellpos.nAnzahl), 0.0)), 2) AS absatz
        FROM tbestellung
        JOIN tbestellpos ON tbestellpos.tBestellung_kBestellung = tBestellung.kBestellung
        WHERE tbestellpos.tArtikel_kArtikel = @Key
            AND tbestellung.cType = 'B') AS jabsatzgesamt on 1=1) AS Retourenquote
    ORDER BY Plattform

    Zulaufübersicht

    Diese Übersicht bietet Informationen zu ausstehenden Lieferantenbestellungen zum markierten Artikel. Folgende Informationen werden dargestellt:

    • Bestellnummer
    • Lieferant
    • Bestelldatum
    • Bestellmenge
    • Gelieferte Menge
    • Offene Menge
    • Voraussichtliches Lieferdatum
    • Hinweis
    • Interner Kommentar
    • Zielort
    SELECT 
    	tLieferantenBestellung.cEigeneBestellnummer AS 'Bestellnummer',
    	tLieferant.cFirma AS 'Lieferant',
    	CONVERT(VARCHAR, tLieferantenBestellung.dErstellt, 104) AS 'Bestelldatum',
    	ROUND(CONVERT(FLOAT, tLieferantenBestellungPos.fMenge), 2) AS 'Bestellmenge',
    	ROUND(CONVERT(FLOAT, tLieferantenBestellungPos.fMengeGeliefert), 2) AS 'Gelieferte Menge',
    	ROUND(CONVERT(FLOAT, tLieferantenBestellungPos.fAnzahlOffen), 2) AS 'Offene Menge',
    	CONVERT(VARCHAR, tLieferantenBestellungPos.dLieferdatum, 104) AS 'Vorauss. Lieferdatum',
    	tLieferantenBestellungPos.cHinweis AS 'Hinweis',
    	tLieferantenBestellung.cInternerKommentar AS 'Interner Kommentar',
    	tLieferantenBestellung.cDruckAnmerkung AS 'Druckanmerkung',
    	tLieferantenBestellung.nStatus,
    	CASE
    		WHEN tLieferantenBestellung.kKunde > 0 THEN CONCAT(tLieferantenBestellungLA.cVorname, ' ', tLieferantenBestellungLA.cNachname, ' ', tLieferantenBestellungLA.cFirma)
    		ELSE ISNULL(tWarenLager.cName, '')
    	END AS 'Zielort'
    FROM tLieferantenBestellung
    	JOIN tLieferantenBestellungPos ON tLieferantenBestellungPos.kLieferantenBestellung = tLieferantenBestellung.kLieferantenBestellung
    	JOIN tArtikel ON tArtikel.kArtikel = tLieferantenBestellungPos.kArtikel
    	JOIN tlieferant ON tlieferant.kLieferant = tLieferantenBestellung.kLieferant
    	LEFT JOIN tWarenLager ON tWarenLager.kWarenLager = tLieferantenBestellung.kLager
    	JOIN tLieferantenBestellungLA ON tLieferantenBestellungLA.kLieferantenBestellungLA = tLieferantenBestellung.kLieferantenBestellungLA
    WHERE tArtikel.kArtikel = @Key
    	AND tLieferantenBestellung.nStatus >= 20 
    	AND tLieferantenBestellung.nStatus < 500 
    	AND (nDeleted = 0 OR nDeleted IS NULL)
    	AND tLieferantenBestellungPos.fMengeGeliefert < tLieferantenBestellungPos.fMenge