Problemstellung
Ihr möchtet den EK, sowie den Lagerbestand zu einem in der Vergangenheit liegenden Zeitpunkt abfragen und dabei auf keine externen Tools setzen. Ihr seid so fancy, dass ihr das ganze direkt in klipfolio oder PowerBI direkt visualisiert haben wollt und daher das Plain SQL braucht?
Dann schaut euch das Ding hier mal an:
/*
Jedem, der eine Kopie dieser Software und der zugehörigen Dokumentationsdateien (die „Software“) erhält, wird hiermit kostenlos die Erlaubnis erteilt, ohne Einschränkung mit der Software zu handeln, einschließlich und ohne Einschränkung der Rechte zur Nutzung, zum Kopieren, Ändern, Zusammenführen, Veröffentlichen, Verteilen, Unterlizenzieren und/oder Verkaufen von Kopien der Software, und Personen, denen die Software zur Verfügung gestellt wird, dies unter den folgenden Bedingungen zu gestatten:
Der obige Urheberrechtshinweis und dieser Genehmigungshinweis müssen in allen Kopien oder wesentlichen Teilen der Software enthalten sein.
*/
DECLARE @stichtag DATETIME2= N'2020-08-01';
SELECT [ta].[cArtNr] [Artikelnummer],
[ta].[cBarcode] AS [EAN],
tab.cName [Artikelname],
CONVERT(FLOAT, SUM(CASE
WHEN DATEDIFF(DAY, [twle].[dErstellt], @stichtag) >= 0
THEN [twle].[fAnzahl]
ELSE 0
END - ISNULL([ttwla].[Anzahl], 0))) AS [Stichtagsbestand],
CONVERT(FLOAT, SUM((CASE
WHEN DATEDIFF(DAY, [twle].[dErstellt], @stichtag) >= 0
THEN [twle].[fAnzahl]
ELSE 0
END - ISNULL([ttwla].[Anzahl], 0)) * [twle].[fEKEinzel]) / SUM(CASE
WHEN DATEDIFF(DAY, [twle].[dErstellt], @stichtag) >= 0
THEN [twle].[fAnzahl]
ELSE 0
END - ISNULL([ttwla].[Anzahl], 0))) AS [Durschn. Ek],
tliefartikel.fEKNetto [Lief. Ek],
tliefartikel.cWaehrung [Lief. Ek Währung]
FROM dbo.tWarenLagerEingang twle
INNER JOIN dbo.tWarenLagerPlatz twlpE
ON twlpE.kWarenLagerPlatz = twle.kWarenLagerPlatz
INNER JOIN dbo.tArtikel ta
ON ta.kArtikel = twle.kArtikel
INNER JOIN dbo.tArtikelBeschreibung tab
ON tab.kArtikel = ta.kArtikel
AND tab.kSprache = 1
AND tab.kShop = 0
AND tab.kPlattform = 1
INNER JOIN tliefartikel
ON tliefartikel.tArtikel_kArtikel = ta.kArtikel
AND tliefartikel.nStandard = 1
LEFT OUTER JOIN
(
SELECT SUM(ISNULL([fAnzahl], 0)) [Anzahl],
[twla].[kWarenLagerEingang]
FROM dbo.tWarenLagerAusgang twla
WHERE [twla].[dErstellt] <= @stichtag
GROUP BY [twla].[kWarenLagerEingang]
) ttwla
ON ttwla.kWarenLagerEingang = twle.kWarenLagerEingang
WHERE(CASE
WHEN DATEDIFF(DAY, [twle].[dErstellt], @stichtag) >= 0
THEN [twle].[fAnzahl]
ELSE 0
END - ISNULL([ttwla].[Anzahl], 0)) > 0
GROUP BY [ta].[cArtNr],
ta.kArtikel,
[ta].[cBarcode],
tab.cName,
tliefartikel.fEKNetto,
tliefartikel.cWaehrung;
Kommentare
0 Kommentare
Bitte melden Sie sich an, um einen Kommentar zu hinterlassen.