DECLARE @Vor1Monat DATE = EOMONTH(DATEADD(MONTH,-1,GETDATE()))
DECLARE @Vor2Monat DATE = EOMONTH(DATEADD(MONTH,-2,GETDATE()))
DECLARE @Vor3Monat DATE = EOMONTH(DATEADD(MONTH,-3,GETDATE()))
DECLARE @Vor4Monat DATE = EOMONTH(DATEADD(MONTH,-4,GETDATE()))
DECLARE @Vor5Monat DATE = EOMONTH(DATEADD(MONTH,-5,GETDATE()))
DECLARE @Vor6Monat DATE = EOMONTH(DATEADD(MONTH,-6,GETDATE()))
DECLARE @Vor7Monat DATE = EOMONTH(DATEADD(MONTH,-7,GETDATE()))
DECLARE @Vor8Monat DATE = EOMONTH(DATEADD(MONTH,-8,GETDATE()))
DECLARE @Vor9Monat DATE = EOMONTH(DATEADD(MONTH,-9,GETDATE()))
DECLARE @Vor10Monat DATE = EOMONTH(DATEADD(MONTH,-10,GETDATE()))
DECLARE @Vor11Monat DATE = EOMONTH(DATEADD(MONTH,-11,GETDATE()))
DECLARE @Vor12Monat DATE = EOMONTH(DATEADD(MONTH,-12,GETDATE()))
DECLARE @Vor12MonatAnfang DATE = DATEADD(day,1,EOMONTH(DATEADD(MONTH,-13,GETDATE())))
DECLARE @LAGER AS INT = 2;
WITH
allemonate AS (
SELECT FORMAT(@Vor1Monat,'yyyy.MM') AS 'ZR'
UNION SELECT FORMAT(@Vor2Monat,'yyyy.MM') AS 'ZR'
UNION SELECT FORMAT(@Vor3Monat,'yyyy.MM') AS 'ZR'
UNION SELECT FORMAT(@Vor4Monat,'yyyy.MM') AS 'ZR'
UNION SELECT FORMAT(@Vor5Monat,'yyyy.MM') AS 'ZR'
UNION SELECT FORMAT(@Vor6Monat,'yyyy.MM') AS 'ZR'
UNION SELECT FORMAT(@Vor7Monat,'yyyy.MM') AS 'ZR'
UNION SELECT FORMAT(@Vor8Monat,'yyyy.MM') AS 'ZR'
UNION SELECT FORMAT(@Vor9Monat,'yyyy.MM') AS 'ZR'
UNION SELECT FORMAT(@Vor10Monat,'yyyy.MM') AS 'ZR'
UNION SELECT FORMAT(@Vor11Monat,'yyyy.MM') AS 'ZR'
UNION SELECT FORMAT(@Vor12Monat,'yyyy.MM') AS 'ZR'
UNION SELECT FORMAT(@Vor12MonatAnfang,'yyyy.MM') AS 'ZR'
),
monatEINS AS (
SELECT TOP 1
FORMAT(SUM(IIF(lbp.BuchungsArt = 'Umlagerung WMS',0,lbp.fAnzahl)) OVER (ORDER BY lbp.dZeitstempel ASC),'0') AS 'Bestand Zeitpunkt X',
FORMAT(@Vor1Monat,'yyyy.MM') AS 'ZR'
FROM (
SELECT
wehis.dZeitstempel,
wehis.fAnzahl,
ba.cName AS 'BuchungsArt'
FROM
tWarenlagereinganghistorie wehis
JOIN tWarenlagereingang we ON we.kWarenLagerEingang = wehis.kWarenLagerEingang
LEFT JOIN tWarenlagerplatz wlp ON wlp.kWarenLagerPlatz = wehis.kWarenLagerPlatzStart
LEFT JOIN tBuchungsArt ba ON ba.kBuchungsArt = wehis.kBuchungsart
JOIN tartikel a ON a.kartikel = we.kartikel
LEFT JOIN tLhm l1 ON l1.kLhm = wehis.kLHMStart
WHERE
(wlp.kWarenlager = @LAGER OR wlp.kWarenlager IS NULL)
AND (a.kArtikel = @KEY)
UNION ALL
SELECT
history.Buchungsdatum AS 'dZeitstempel',
history.Buchungsmenge AS 'fAnzahl',
ba.cName AS 'BuchungsArt'
FROM
(
SELECT
h.dGebucht AS 'Buchungsdatum',
h.fAnzahl AS 'Buchungsmenge',
h.kBuchungsart,
h.kArtikel,
h.kWarenLagerPlatz
FROM
tArtikelHistory h
JOIN tWarenLagerPlatz wlp ON wlp.kWarenLagerPlatz = h.kWarenLagerPlatz
JOIN tWarenLager wl ON wl.kWarenLager = wlp.kWarenLager
WHERE
CAST('1900-01-01 00:00:00.000' AS DATETIME) <= h.dGebucht
AND GETDATE() >= h.dGebucht
AND wl.kWarenLager = @LAGER
) AS history
LEFT JOIN tBuchungsArt ba ON ba.kBuchungsArt = history.kBuchungsart
JOIN tartikel a ON a.kartikel = history.kartikel
WHERE
history.kBuchungsart in (30,31,32,80,100,110,120,130,10,20,170,200)
AND (a.kArtikel = @KEY)
) lbp
WHERE
lbp.dZeitstempel <= @Vor1Monat
ORDER BY
lbp.dZeitstempel DESC
),
monatZWEI AS (
SELECT TOP 1
FORMAT(SUM(IIF(lbp.BuchungsArt = 'Umlagerung WMS',0,lbp.fAnzahl)) OVER (ORDER BY lbp.dZeitstempel ASC),'0') AS 'Bestand Zeitpunkt X',
FORMAT(@Vor2Monat,'yyyy.MM') AS 'ZR'
FROM (
SELECT
wehis.dZeitstempel,
wehis.fAnzahl,
ba.cName AS 'BuchungsArt'
FROM
tWarenlagereinganghistorie wehis
JOIN tWarenlagereingang we ON we.kWarenLagerEingang = wehis.kWarenLagerEingang
LEFT JOIN tWarenlagerplatz wlp ON wlp.kWarenLagerPlatz = wehis.kWarenLagerPlatzStart
LEFT JOIN tBuchungsArt ba ON ba.kBuchungsArt = wehis.kBuchungsart
JOIN tartikel a ON a.kartikel = we.kartikel
LEFT JOIN tLhm l1 ON l1.kLhm = wehis.kLHMStart
WHERE
(wlp.kWarenlager = @LAGER OR wlp.kWarenlager IS NULL)
AND (a.kArtikel = @KEY)
UNION ALL
SELECT
history.Buchungsdatum AS 'dZeitstempel',
history.Buchungsmenge AS 'fAnzahl',
ba.cName AS 'BuchungsArt'
FROM
(
SELECT
h.dGebucht AS 'Buchungsdatum',
h.fAnzahl AS 'Buchungsmenge',
h.kBuchungsart,
h.kArtikel,
h.kWarenLagerPlatz
FROM
tArtikelHistory h
JOIN tWarenLagerPlatz wlp ON wlp.kWarenLagerPlatz = h.kWarenLagerPlatz
JOIN tWarenLager wl ON wl.kWarenLager = wlp.kWarenLager
WHERE
CAST('1900-01-01 00:00:00.000' AS DATETIME) <= h.dGebucht
AND GETDATE() >= h.dGebucht
AND wl.kWarenLager = @LAGER
) AS history
LEFT JOIN tBuchungsArt ba ON ba.kBuchungsArt = history.kBuchungsart
JOIN tartikel a ON a.kartikel = history.kartikel
WHERE
history.kBuchungsart in (30,31,32,80,100,110,120,130,10,20,170,200)
AND (a.kArtikel = @KEY)
) lbp
WHERE
lbp.dZeitstempel <= @Vor2Monat
ORDER BY
lbp.dZeitstempel DESC
),
monatDREI AS (
SELECT TOP 1
FORMAT(SUM(IIF(lbp.BuchungsArt = 'Umlagerung WMS',0,lbp.fAnzahl)) OVER (ORDER BY lbp.dZeitstempel ASC),'0') AS 'Bestand Zeitpunkt X',
FORMAT(@Vor3Monat,'yyyy.MM') AS 'ZR'
FROM (
SELECT
wehis.dZeitstempel,
wehis.fAnzahl,
ba.cName AS 'BuchungsArt'
FROM
tWarenlagereinganghistorie wehis
JOIN tWarenlagereingang we ON we.kWarenLagerEingang = wehis.kWarenLagerEingang
LEFT JOIN tWarenlagerplatz wlp ON wlp.kWarenLagerPlatz = wehis.kWarenLagerPlatzStart
LEFT JOIN tBuchungsArt ba ON ba.kBuchungsArt = wehis.kBuchungsart
JOIN tartikel a ON a.kartikel = we.kartikel
LEFT JOIN tLhm l1 ON l1.kLhm = wehis.kLHMStart
WHERE
(wlp.kWarenlager = @LAGER OR wlp.kWarenlager IS NULL)
AND (a.kArtikel = @KEY)
UNION ALL
SELECT
history.Buchungsdatum AS 'dZeitstempel',
history.Buchungsmenge AS 'fAnzahl',
ba.cName AS 'BuchungsArt'
FROM
(
SELECT
h.dGebucht AS 'Buchungsdatum',
h.fAnzahl AS 'Buchungsmenge',
h.kBuchungsart,
h.kArtikel,
h.kWarenLagerPlatz
FROM
tArtikelHistory h
JOIN tWarenLagerPlatz wlp ON wlp.kWarenLagerPlatz = h.kWarenLagerPlatz
JOIN tWarenLager wl ON wl.kWarenLager = wlp.kWarenLager
WHERE
CAST('1900-01-01 00:00:00.000' AS DATETIME) <= h.dGebucht
AND GETDATE() >= h.dGebucht
AND wl.kWarenLager = @LAGER
) AS history
LEFT JOIN tBuchungsArt ba ON ba.kBuchungsArt = history.kBuchungsart
JOIN tartikel a ON a.kartikel = history.kartikel
WHERE
history.kBuchungsart in (30,31,32,80,100,110,120,130,10,20,170,200)
AND (a.kArtikel = @KEY)
) lbp
WHERE
lbp.dZeitstempel <= @Vor3Monat
ORDER BY
lbp.dZeitstempel DESC
),
monatVIER AS (
SELECT TOP 1
FORMAT(SUM(IIF(lbp.BuchungsArt = 'Umlagerung WMS',0,lbp.fAnzahl)) OVER (ORDER BY lbp.dZeitstempel ASC),'0') AS 'Bestand Zeitpunkt X',
FORMAT(@Vor4Monat,'yyyy.MM') AS 'ZR'
FROM (
SELECT
wehis.dZeitstempel,
wehis.fAnzahl,
ba.cName AS 'BuchungsArt'
FROM
tWarenlagereinganghistorie wehis
JOIN tWarenlagereingang we ON we.kWarenLagerEingang = wehis.kWarenLagerEingang
LEFT JOIN tWarenlagerplatz wlp ON wlp.kWarenLagerPlatz = wehis.kWarenLagerPlatzStart
LEFT JOIN tBuchungsArt ba ON ba.kBuchungsArt = wehis.kBuchungsart
JOIN tartikel a ON a.kartikel = we.kartikel
LEFT JOIN tLhm l1 ON l1.kLhm = wehis.kLHMStart
WHERE
(wlp.kWarenlager = @LAGER OR wlp.kWarenlager IS NULL)
AND (a.kArtikel = @KEY)
UNION ALL
SELECT
history.Buchungsdatum AS 'dZeitstempel',
history.Buchungsmenge AS 'fAnzahl',
ba.cName AS 'BuchungsArt'
FROM
(
SELECT
h.dGebucht AS 'Buchungsdatum',
h.fAnzahl AS 'Buchungsmenge',
h.kBuchungsart,
h.kArtikel,
h.kWarenLagerPlatz
FROM
tArtikelHistory h
JOIN tWarenLagerPlatz wlp ON wlp.kWarenLagerPlatz = h.kWarenLagerPlatz
JOIN tWarenLager wl ON wl.kWarenLager = wlp.kWarenLager
WHERE
CAST('1900-01-01 00:00:00.000' AS DATETIME) <= h.dGebucht
AND GETDATE() >= h.dGebucht
AND wl.kWarenLager = @LAGER
) AS history
LEFT JOIN tBuchungsArt ba ON ba.kBuchungsArt = history.kBuchungsart
JOIN tartikel a ON a.kartikel = history.kartikel
WHERE
history.kBuchungsart in (30,31,32,80,100,110,120,130,10,20,170,200)
AND (a.kArtikel = @KEY)
) lbp
WHERE
lbp.dZeitstempel <= @Vor4Monat
ORDER BY
lbp.dZeitstempel DESC
),
monatFUNF AS (
SELECT TOP 1
FORMAT(SUM(IIF(lbp.BuchungsArt = 'Umlagerung WMS',0,lbp.fAnzahl)) OVER (ORDER BY lbp.dZeitstempel ASC),'0') AS 'Bestand Zeitpunkt X',
FORMAT(@Vor5Monat,'yyyy.MM') AS 'ZR'
FROM (
SELECT
wehis.dZeitstempel,
wehis.fAnzahl,
ba.cName AS 'BuchungsArt'
FROM
tWarenlagereinganghistorie wehis
JOIN tWarenlagereingang we ON we.kWarenLagerEingang = wehis.kWarenLagerEingang
LEFT JOIN tWarenlagerplatz wlp ON wlp.kWarenLagerPlatz = wehis.kWarenLagerPlatzStart
LEFT JOIN tBuchungsArt ba ON ba.kBuchungsArt = wehis.kBuchungsart
JOIN tartikel a ON a.kartikel = we.kartikel
LEFT JOIN tLhm l1 ON l1.kLhm = wehis.kLHMStart
WHERE
(wlp.kWarenlager = @LAGER OR wlp.kWarenlager IS NULL)
AND (a.kArtikel = @KEY)
UNION ALL
SELECT
history.Buchungsdatum AS 'dZeitstempel',
history.Buchungsmenge AS 'fAnzahl',
ba.cName AS 'BuchungsArt'
FROM
(
SELECT
h.dGebucht AS 'Buchungsdatum',
h.fAnzahl AS 'Buchungsmenge',
h.kBuchungsart,
h.kArtikel,
h.kWarenLagerPlatz
FROM
tArtikelHistory h
JOIN tWarenLagerPlatz wlp ON wlp.kWarenLagerPlatz = h.kWarenLagerPlatz
JOIN tWarenLager wl ON wl.kWarenLager = wlp.kWarenLager
WHERE
CAST('1900-01-01 00:00:00.000' AS DATETIME) <= h.dGebucht
AND GETDATE() >= h.dGebucht
AND wl.kWarenLager = @LAGER
) AS history
LEFT JOIN tBuchungsArt ba ON ba.kBuchungsArt = history.kBuchungsart
JOIN tartikel a ON a.kartikel = history.kartikel
WHERE
history.kBuchungsart in (30,31,32,80,100,110,120,130,10,20,170,200)
AND (a.kArtikel = @KEY)
) lbp
WHERE
lbp.dZeitstempel <= @Vor5Monat
ORDER BY
lbp.dZeitstempel DESC
),
monatSECHS AS (
SELECT TOP 1
FORMAT(SUM(IIF(lbp.BuchungsArt = 'Umlagerung WMS',0,lbp.fAnzahl)) OVER (ORDER BY lbp.dZeitstempel ASC),'0') AS 'Bestand Zeitpunkt X',
FORMAT(@Vor6Monat,'yyyy.MM') AS 'ZR'
FROM (
SELECT
wehis.dZeitstempel,
wehis.fAnzahl,
ba.cName AS 'BuchungsArt'
FROM
tWarenlagereinganghistorie wehis
JOIN tWarenlagereingang we ON we.kWarenLagerEingang = wehis.kWarenLagerEingang
LEFT JOIN tWarenlagerplatz wlp ON wlp.kWarenLagerPlatz = wehis.kWarenLagerPlatzStart
LEFT JOIN tBuchungsArt ba ON ba.kBuchungsArt = wehis.kBuchungsart
JOIN tartikel a ON a.kartikel = we.kartikel
LEFT JOIN tLhm l1 ON l1.kLhm = wehis.kLHMStart
WHERE
(wlp.kWarenlager = @LAGER OR wlp.kWarenlager IS NULL)
AND (a.kArtikel = @KEY)
UNION ALL
SELECT
history.Buchungsdatum AS 'dZeitstempel',
history.Buchungsmenge AS 'fAnzahl',
ba.cName AS 'BuchungsArt'
FROM
(
SELECT
h.dGebucht AS 'Buchungsdatum',
h.fAnzahl AS 'Buchungsmenge',
h.kBuchungsart,
h.kArtikel,
h.kWarenLagerPlatz
FROM
tArtikelHistory h
JOIN tWarenLagerPlatz wlp ON wlp.kWarenLagerPlatz = h.kWarenLagerPlatz
JOIN tWarenLager wl ON wl.kWarenLager = wlp.kWarenLager
WHERE
CAST('1900-01-01 00:00:00.000' AS DATETIME) <= h.dGebucht
AND GETDATE() >= h.dGebucht
AND wl.kWarenLager = @LAGER
) AS history
LEFT JOIN tBuchungsArt ba ON ba.kBuchungsArt = history.kBuchungsart
JOIN tartikel a ON a.kartikel = history.kartikel
WHERE
history.kBuchungsart in (30,31,32,80,100,110,120,130,10,20,170,200)
AND (a.kArtikel = @KEY)
) lbp
WHERE
lbp.dZeitstempel <= @Vor6Monat
ORDER BY
lbp.dZeitstempel DESC
)
,
monatSIEBEN AS (
SELECT TOP 1
FORMAT(SUM(IIF(lbp.BuchungsArt = 'Umlagerung WMS',0,lbp.fAnzahl)) OVER (ORDER BY lbp.dZeitstempel ASC),'0') AS 'Bestand Zeitpunkt X',
FORMAT(@Vor7Monat,'yyyy.MM') AS 'ZR'
FROM (
SELECT
wehis.dZeitstempel,
wehis.fAnzahl,
ba.cName AS 'BuchungsArt'
FROM
tWarenlagereinganghistorie wehis
JOIN tWarenlagereingang we ON we.kWarenLagerEingang = wehis.kWarenLagerEingang
LEFT JOIN tWarenlagerplatz wlp ON wlp.kWarenLagerPlatz = wehis.kWarenLagerPlatzStart
LEFT JOIN tBuchungsArt ba ON ba.kBuchungsArt = wehis.kBuchungsart
JOIN tartikel a ON a.kartikel = we.kartikel
LEFT JOIN tLhm l1 ON l1.kLhm = wehis.kLHMStart
WHERE
(wlp.kWarenlager = @LAGER OR wlp.kWarenlager IS NULL)
AND (a.kArtikel = @KEY)
UNION ALL
SELECT
history.Buchungsdatum AS 'dZeitstempel',
history.Buchungsmenge AS 'fAnzahl',
ba.cName AS 'BuchungsArt'
FROM
(
SELECT
h.dGebucht AS 'Buchungsdatum',
h.fAnzahl AS 'Buchungsmenge',
h.kBuchungsart,
h.kArtikel,
h.kWarenLagerPlatz
FROM
tArtikelHistory h
JOIN tWarenLagerPlatz wlp ON wlp.kWarenLagerPlatz = h.kWarenLagerPlatz
JOIN tWarenLager wl ON wl.kWarenLager = wlp.kWarenLager
WHERE
CAST('1900-01-01 00:00:00.000' AS DATETIME) <= h.dGebucht
AND GETDATE() >= h.dGebucht
AND wl.kWarenLager = @LAGER
) AS history
LEFT JOIN tBuchungsArt ba ON ba.kBuchungsArt = history.kBuchungsart
JOIN tartikel a ON a.kartikel = history.kartikel
WHERE
history.kBuchungsart in (30,31,32,80,100,110,120,130,10,20,170,200)
AND (a.kArtikel = @KEY)
) lbp
WHERE
lbp.dZeitstempel <= @Vor7Monat
ORDER BY
lbp.dZeitstempel DESC
),
monatACHT AS (
SELECT TOP 1
FORMAT(SUM(IIF(lbp.BuchungsArt = 'Umlagerung WMS',0,lbp.fAnzahl)) OVER (ORDER BY lbp.dZeitstempel ASC),'0') AS 'Bestand Zeitpunkt X',
FORMAT(@Vor8Monat,'yyyy.MM') AS 'ZR'
FROM (
SELECT
wehis.dZeitstempel,
wehis.fAnzahl,
ba.cName AS 'BuchungsArt'
FROM
tWarenlagereinganghistorie wehis
JOIN tWarenlagereingang we ON we.kWarenLagerEingang = wehis.kWarenLagerEingang
LEFT JOIN tWarenlagerplatz wlp ON wlp.kWarenLagerPlatz = wehis.kWarenLagerPlatzStart
LEFT JOIN tBuchungsArt ba ON ba.kBuchungsArt = wehis.kBuchungsart
JOIN tartikel a ON a.kartikel = we.kartikel
LEFT JOIN tLhm l1 ON l1.kLhm = wehis.kLHMStart
WHERE
(wlp.kWarenlager = @LAGER OR wlp.kWarenlager IS NULL)
AND (a.kArtikel = @KEY)
UNION ALL
SELECT
history.Buchungsdatum AS 'dZeitstempel',
history.Buchungsmenge AS 'fAnzahl',
ba.cName AS 'BuchungsArt'
FROM
(
SELECT
h.dGebucht AS 'Buchungsdatum',
h.fAnzahl AS 'Buchungsmenge',
h.kBuchungsart,
h.kArtikel,
h.kWarenLagerPlatz
FROM
tArtikelHistory h
JOIN tWarenLagerPlatz wlp ON wlp.kWarenLagerPlatz = h.kWarenLagerPlatz
JOIN tWarenLager wl ON wl.kWarenLager = wlp.kWarenLager
WHERE
CAST('1900-01-01 00:00:00.000' AS DATETIME) <= h.dGebucht
AND GETDATE() >= h.dGebucht
AND wl.kWarenLager = @LAGER
) AS history
LEFT JOIN tBuchungsArt ba ON ba.kBuchungsArt = history.kBuchungsart
JOIN tartikel a ON a.kartikel = history.kartikel
WHERE
history.kBuchungsart in (30,31,32,80,100,110,120,130,10,20,170,200)
AND (a.kArtikel = @KEY)
) lbp
WHERE
lbp.dZeitstempel <= @Vor8Monat
ORDER BY
lbp.dZeitstempel DESC
),
monatNEUN AS (
SELECT TOP 1
FORMAT(SUM(IIF(lbp.BuchungsArt = 'Umlagerung WMS',0,lbp.fAnzahl)) OVER (ORDER BY lbp.dZeitstempel ASC),'0') AS 'Bestand Zeitpunkt X',
FORMAT(@Vor9Monat,'yyyy.MM') AS 'ZR'
FROM (
SELECT
wehis.dZeitstempel,
wehis.fAnzahl,
ba.cName AS 'BuchungsArt'
FROM
tWarenlagereinganghistorie wehis
JOIN tWarenlagereingang we ON we.kWarenLagerEingang = wehis.kWarenLagerEingang
LEFT JOIN tWarenlagerplatz wlp ON wlp.kWarenLagerPlatz = wehis.kWarenLagerPlatzStart
LEFT JOIN tBuchungsArt ba ON ba.kBuchungsArt = wehis.kBuchungsart
JOIN tartikel a ON a.kartikel = we.kartikel
LEFT JOIN tLhm l1 ON l1.kLhm = wehis.kLHMStart
WHERE
(wlp.kWarenlager = @LAGER OR wlp.kWarenlager IS NULL)
AND (a.kArtikel = @KEY)
UNION ALL
SELECT
history.Buchungsdatum AS 'dZeitstempel',
history.Buchungsmenge AS 'fAnzahl',
ba.cName AS 'BuchungsArt'
FROM
(
SELECT
h.dGebucht AS 'Buchungsdatum',
h.fAnzahl AS 'Buchungsmenge',
h.kBuchungsart,
h.kArtikel,
h.kWarenLagerPlatz
FROM
tArtikelHistory h
JOIN tWarenLagerPlatz wlp ON wlp.kWarenLagerPlatz = h.kWarenLagerPlatz
JOIN tWarenLager wl ON wl.kWarenLager = wlp.kWarenLager
WHERE
CAST('1900-01-01 00:00:00.000' AS DATETIME) <= h.dGebucht
AND GETDATE() >= h.dGebucht
AND wl.kWarenLager = @LAGER
) AS history
LEFT JOIN tBuchungsArt ba ON ba.kBuchungsArt = history.kBuchungsart
JOIN tartikel a ON a.kartikel = history.kartikel
WHERE
history.kBuchungsart in (30,31,32,80,100,110,120,130,10,20,170,200)
AND (a.kArtikel = @KEY)
) lbp
WHERE
lbp.dZeitstempel <= @Vor9Monat
ORDER BY
lbp.dZeitstempel DESC
),
monatZEHN AS (
SELECT TOP 1
FORMAT(SUM(IIF(lbp.BuchungsArt = 'Umlagerung WMS',0,lbp.fAnzahl)) OVER (ORDER BY lbp.dZeitstempel ASC),'0') AS 'Bestand Zeitpunkt X',
FORMAT(@Vor10Monat,'yyyy.MM') AS 'ZR'
FROM (
SELECT
wehis.dZeitstempel,
wehis.fAnzahl,
ba.cName AS 'BuchungsArt'
FROM
tWarenlagereinganghistorie wehis
JOIN tWarenlagereingang we ON we.kWarenLagerEingang = wehis.kWarenLagerEingang
LEFT JOIN tWarenlagerplatz wlp ON wlp.kWarenLagerPlatz = wehis.kWarenLagerPlatzStart
LEFT JOIN tBuchungsArt ba ON ba.kBuchungsArt = wehis.kBuchungsart
JOIN tartikel a ON a.kartikel = we.kartikel
LEFT JOIN tLhm l1 ON l1.kLhm = wehis.kLHMStart
WHERE
(wlp.kWarenlager = @LAGER OR wlp.kWarenlager IS NULL)
AND (a.kArtikel = @KEY)
UNION ALL
SELECT
history.Buchungsdatum AS 'dZeitstempel',
history.Buchungsmenge AS 'fAnzahl',
ba.cName AS 'BuchungsArt'
FROM
(
SELECT
h.dGebucht AS 'Buchungsdatum',
h.fAnzahl AS 'Buchungsmenge',
h.kBuchungsart,
h.kArtikel,
h.kWarenLagerPlatz
FROM
tArtikelHistory h
JOIN tWarenLagerPlatz wlp ON wlp.kWarenLagerPlatz = h.kWarenLagerPlatz
JOIN tWarenLager wl ON wl.kWarenLager = wlp.kWarenLager
WHERE
CAST('1900-01-01 00:00:00.000' AS DATETIME) <= h.dGebucht
AND GETDATE() >= h.dGebucht
AND wl.kWarenLager = @LAGER
) AS history
LEFT JOIN tBuchungsArt ba ON ba.kBuchungsArt = history.kBuchungsart
JOIN tartikel a ON a.kartikel = history.kartikel
WHERE
history.kBuchungsart in (30,31,32,80,100,110,120,130,10,20,170,200)
AND (a.kArtikel = @KEY)
) lbp
WHERE
lbp.dZeitstempel <= @Vor10Monat
ORDER BY
lbp.dZeitstempel DESC
)
,
monatELF AS (
SELECT TOP 1
FORMAT(SUM(IIF(lbp.BuchungsArt = 'Umlagerung WMS',0,lbp.fAnzahl)) OVER (ORDER BY lbp.dZeitstempel ASC),'0') AS 'Bestand Zeitpunkt X',
FORMAT(@Vor11Monat,'yyyy.MM') AS 'ZR'
FROM (
SELECT
wehis.dZeitstempel,
wehis.fAnzahl,
ba.cName AS 'BuchungsArt'
FROM
tWarenlagereinganghistorie wehis
JOIN tWarenlagereingang we ON we.kWarenLagerEingang = wehis.kWarenLagerEingang
LEFT JOIN tWarenlagerplatz wlp ON wlp.kWarenLagerPlatz = wehis.kWarenLagerPlatzStart
LEFT JOIN tBuchungsArt ba ON ba.kBuchungsArt = wehis.kBuchungsart
JOIN tartikel a ON a.kartikel = we.kartikel
LEFT JOIN tLhm l1 ON l1.kLhm = wehis.kLHMStart
WHERE
(wlp.kWarenlager = @LAGER OR wlp.kWarenlager IS NULL)
AND (a.kArtikel = @KEY)
UNION ALL
SELECT
history.Buchungsdatum AS 'dZeitstempel',
history.Buchungsmenge AS 'fAnzahl',
ba.cName AS 'BuchungsArt'
FROM
(
SELECT
h.dGebucht AS 'Buchungsdatum',
h.fAnzahl AS 'Buchungsmenge',
h.kBuchungsart,
h.kArtikel,
h.kWarenLagerPlatz
FROM
tArtikelHistory h
JOIN tWarenLagerPlatz wlp ON wlp.kWarenLagerPlatz = h.kWarenLagerPlatz
JOIN tWarenLager wl ON wl.kWarenLager = wlp.kWarenLager
WHERE
CAST('1900-01-01 00:00:00.000' AS DATETIME) <= h.dGebucht
AND GETDATE() >= h.dGebucht
AND wl.kWarenLager = @LAGER
) AS history
LEFT JOIN tBuchungsArt ba ON ba.kBuchungsArt = history.kBuchungsart
JOIN tartikel a ON a.kartikel = history.kartikel
WHERE
history.kBuchungsart in (30,31,32,80,100,110,120,130,10,20,170,200)
AND (a.kArtikel = @KEY)
) lbp
WHERE
lbp.dZeitstempel <= @Vor11Monat
ORDER BY
lbp.dZeitstempel DESC
),
monatZWOLF AS (
SELECT TOP 1
FORMAT(SUM(IIF(lbp.BuchungsArt = 'Umlagerung WMS',0,lbp.fAnzahl)) OVER (ORDER BY lbp.dZeitstempel ASC),'0') AS 'Bestand Zeitpunkt X',
FORMAT(@Vor12Monat,'yyyy.MM') AS 'ZR'
FROM (
SELECT
wehis.dZeitstempel,
wehis.fAnzahl,
ba.cName AS 'BuchungsArt'
FROM
tWarenlagereinganghistorie wehis
JOIN tWarenlagereingang we ON we.kWarenLagerEingang = wehis.kWarenLagerEingang
LEFT JOIN tWarenlagerplatz wlp ON wlp.kWarenLagerPlatz = wehis.kWarenLagerPlatzStart
LEFT JOIN tBuchungsArt ba ON ba.kBuchungsArt = wehis.kBuchungsart
JOIN tartikel a ON a.kartikel = we.kartikel
LEFT JOIN tLhm l1 ON l1.kLhm = wehis.kLHMStart
WHERE
(wlp.kWarenlager = @LAGER OR wlp.kWarenlager IS NULL)
AND (a.kArtikel = @KEY)
UNION ALL
SELECT
history.Buchungsdatum AS 'dZeitstempel',
history.Buchungsmenge AS 'fAnzahl',
ba.cName AS 'BuchungsArt'
FROM
(
SELECT
h.dGebucht AS 'Buchungsdatum',
h.fAnzahl AS 'Buchungsmenge',
h.kBuchungsart,
h.kArtikel,
h.kWarenLagerPlatz
FROM
tArtikelHistory h
JOIN tWarenLagerPlatz wlp ON wlp.kWarenLagerPlatz = h.kWarenLagerPlatz
JOIN tWarenLager wl ON wl.kWarenLager = wlp.kWarenLager
WHERE
CAST('1900-01-01 00:00:00.000' AS DATETIME) <= h.dGebucht
AND GETDATE() >= h.dGebucht
AND wl.kWarenLager = @LAGER
) AS history
LEFT JOIN tBuchungsArt ba ON ba.kBuchungsArt = history.kBuchungsart
JOIN tartikel a ON a.kartikel = history.kartikel
WHERE
history.kBuchungsart in (30,31,32,80,100,110,120,130,10,20,170,200)
AND (a.kArtikel = @KEY)
) lbp
WHERE
lbp.dZeitstempel <= @Vor12Monat
ORDER BY
lbp.dZeitstempel DESC
),
monatZWOLFANFANG AS (
SELECT TOP 1
FORMAT(SUM(IIF(lbp.BuchungsArt = 'Umlagerung WMS',0,lbp.fAnzahl)) OVER (ORDER BY lbp.dZeitstempel ASC),'0') AS 'Bestand Zeitpunkt X',
FORMAT(@Vor12MonatAnfang,'yyyy.MM') AS 'ZR'
FROM (
SELECT
wehis.dZeitstempel,
wehis.fAnzahl,
ba.cName AS 'BuchungsArt'
FROM
tWarenlagereinganghistorie wehis
JOIN tWarenlagereingang we ON we.kWarenLagerEingang = wehis.kWarenLagerEingang
LEFT JOIN tWarenlagerplatz wlp ON wlp.kWarenLagerPlatz = wehis.kWarenLagerPlatzStart
LEFT JOIN tBuchungsArt ba ON ba.kBuchungsArt = wehis.kBuchungsart
JOIN tartikel a ON a.kartikel = we.kartikel
LEFT JOIN tLhm l1 ON l1.kLhm = wehis.kLHMStart
WHERE
(wlp.kWarenlager = @LAGER OR wlp.kWarenlager IS NULL)
AND (a.kArtikel = @KEY)
UNION ALL
SELECT
history.Buchungsdatum AS 'dZeitstempel',
history.Buchungsmenge AS 'fAnzahl',
ba.cName AS 'BuchungsArt'
FROM
(
SELECT
h.dGebucht AS 'Buchungsdatum',
h.fAnzahl AS 'Buchungsmenge',
h.kBuchungsart,
h.kArtikel,
h.kWarenLagerPlatz
FROM
tArtikelHistory h
JOIN tWarenLagerPlatz wlp ON wlp.kWarenLagerPlatz = h.kWarenLagerPlatz
JOIN tWarenLager wl ON wl.kWarenLager = wlp.kWarenLager
WHERE
CAST('1900-01-01 00:00:00.000' AS DATETIME) <= h.dGebucht
AND GETDATE() >= h.dGebucht
AND wl.kWarenLager = @LAGER
) AS history
LEFT JOIN tBuchungsArt ba ON ba.kBuchungsArt = history.kBuchungsart
JOIN tartikel a ON a.kartikel = history.kartikel
WHERE
history.kBuchungsart in (30,31,32,80,100,110,120,130,10,20,170,200)
AND (a.kArtikel = @KEY)
) lbp
WHERE
lbp.dZeitstempel <= @Vor12MonatAnfang
ORDER BY
lbp.dZeitstempel DESC
),
Lagerdurchschnitt AS (
SELECT
SUM(CAST(CASE
WHEN a.ZR = FORMAT(@Vor1Monat,'yyyy.MM') THEN ISNULL(m1.[Bestand Zeitpunkt X],0)
WHEN a.ZR = FORMAT(@Vor2Monat,'yyyy.MM') THEN ISNULL(m2.[Bestand Zeitpunkt X],0)
WHEN a.ZR = FORMAT(@Vor3Monat,'yyyy.MM') THEN ISNULL(m3.[Bestand Zeitpunkt X],0)
WHEN a.ZR = FORMAT(@Vor4Monat,'yyyy.MM') THEN ISNULL(m4.[Bestand Zeitpunkt X],0)
WHEN a.ZR = FORMAT(@Vor5Monat,'yyyy.MM') THEN ISNULL(m5.[Bestand Zeitpunkt X],0)
WHEN a.ZR = FORMAT(@Vor6Monat,'yyyy.MM') THEN ISNULL(m6.[Bestand Zeitpunkt X],0)
WHEN a.ZR = FORMAT(@Vor7Monat,'yyyy.MM') THEN ISNULL(m7.[Bestand Zeitpunkt X],0)
WHEN a.ZR = FORMAT(@Vor8Monat,'yyyy.MM') THEN ISNULL(m8.[Bestand Zeitpunkt X],0)
WHEN a.ZR = FORMAT(@Vor9Monat,'yyyy.MM') THEN ISNULL(m9.[Bestand Zeitpunkt X],0)
WHEN a.ZR = FORMAT(@Vor10Monat,'yyyy.MM') THEN ISNULL(m10.[Bestand Zeitpunkt X],0)
WHEN a.ZR = FORMAT(@Vor11Monat,'yyyy.MM') THEN ISNULL(m11.[Bestand Zeitpunkt X],0)
WHEN a.ZR = FORMAT(@Vor12Monat,'yyyy.MM') THEN ISNULL(m12.[Bestand Zeitpunkt X],0)
WHEN a.ZR = FORMAT(@Vor12MonatAnfang,'yyyy.MM') THEN ISNULL(m12a.[Bestand Zeitpunkt X],0)
END AS DECIMAL(18,2))) / 13 AS 'Durchschnittlicher-Bestand'
FROM
allemonate a
LEFT JOIN monatEINS m1 ON m1.ZR = a.ZR
LEFT JOIN monatZWEI m2 ON m2.ZR = a.ZR
LEFT JOIN monatDREI m3 ON m3.ZR = a.ZR
LEFT JOIN monatVIER m4 ON m4.ZR = a.ZR
LEFT JOIN monatFUNF m5 ON m5.ZR = a.ZR
LEFT JOIN monatSECHS m6 ON m6.ZR = a.ZR
LEFT JOIN monatSIEBEN m7 ON m7.ZR = a.ZR
LEFT JOIN monatACHT m8 ON m8.ZR = a.ZR
LEFT JOIN monatNEUN m9 ON m9.ZR = a.ZR
LEFT JOIN monatZEHN m10 ON m10.ZR = a.ZR
LEFT JOIN monatELF m11 ON m11.ZR = a.ZR
LEFT JOIN monatZWOLF m12 ON m12.ZR = a.ZR
LEFT JOIN monatZWOLFANFANG m12a ON m12.ZR = a.ZR
)
-- Berechnung Lagerumschlagshäufigkeit = Lagerabgänge / durchschnittlicher Lagerbestand
SELECT
FORMAT(SUM(lpos.fAnzahl),'0.00') AS 'Versandmenge',
FORMAT(ld.[Durchschnittlicher-Bestand],'0.00') AS 'durchschnittlicher Lagerbestand',
FORMAT(SUM(lpos.fAnzahl) / ld.[Durchschnittlicher-Bestand],'0.00') AS 'Lagerumschlagshäufigkeit'
FROM
tLieferschein l
LEFT JOIN tLieferscheinPos lpos ON lpos.kLieferschein = l.kLieferschein
LEFT JOIN Verkauf.tAuftragPosition abpos ON abpos.kAuftragPosition = lpos.kBestellPos
LEFT JOIN Lagerdurchschnitt ld ON ld.[Durchschnittlicher-Bestand] > 0
WHERE
l.dErstellt >= @Vor12MonatAnfang
AND abpos.kArtikel = @KEY
GROUP BY
ld.[Durchschnittlicher-Bestand]