Unten ist meine Abfrage. Kurz gesagt, meine Daten sind Jahr-zu-Datum-Zahlen, so dass die Abfrage die Monat-für-Datum-Bewegung ausrechnet, indem der aktuelle Monat und minus der Monat-1 abgerufen wird.SQL - MTD-Nummern von YTD, fehlende Nummern
Es funktioniert gut, wenn der aktuelle Monat alle Kombinationen des Vormonats enthält. Aber in diesem Monat war eine der Combos Null - daher YTD = 0 und es gibt keine Aufzeichnung für September.
Aber der Datensatz existiert noch im August, also sollte es mir eine Bewegung geben, dh August zeigt 100 und Sep zeigt nichts an. so sollte Bewegung 0-100 = -100 sein.
Ich weiß nicht, wie man die Abfrage anpasst, ich muss angeben, welchen Monat ich zuerst brauche, wo curr.month = 9, aber da die Kombination im September nicht existiert, funktioniert meine Verknüpfung nicht auch Gut. Bitte helfen Sie. Es verwendet die Sep-Daten als Basis, wo es sowohl Aug- als auch Sep-Kombinationen verwenden sollte.
SELECT curr.[Month],
curr.[GRCARef],
curr.[IEItem],
curr.currYTD,
prev.prevYTD,
CASE curr.[Month]
When 1 then currYTD
ELSE
cast((currYTD - COALESCE(prevYTD,0)) as numeric(15,2))
END as MTD
FROM
(SELECT [Month],
[GRCARef],
[Ac Code] IEItem,
sum([BalLCY]) currYTD
FROM [PWC_2017Q2].[dbo].[SS620_PL_FullYear]
Group by [Month], [Bch], [GRCARef],[Ac Code], [ProdType],[GHO]
) curr
Full Outer JOIN
(SELECT [Month],
[GRCARef],
[Ac Code] IEItem,
sum([BalLCY]) prevYTD
FROM [PWC_2017Q2].[dbo].[SS620_PL_FullYear]
Group by [Month], [Bch], [GRCARef], [Ac Code], [ProdType],[GHO]
) prev
ON curr.[GRCARef] = prev.[GRCARef]
and curr.[IEItem] = prev.[IEItem]
and curr.[Month] - 1 = prev.[Month]
-- Join with Month -1
where
curr.[MONTH] = 9
haben Sie gelöst? Haben Sie irgendeine Antwort für nützlich befunden? – MtwStark