ich eine Tabelle, wo ich Daten eines Produkts (SlobID) eingeben, dieHolen
SELECT TemplateID, SlobID, FromYear, ToYear, MAX(ValidFrom) AS CurrentDate
FROM CommissionsPerTemplate AS CommissionsPerTemplate_1
GROUP BY TemplateID, SlobID, FromYear, ToYear
HAVING (MAX(ValidFrom) <= GETDATE()) AND (TemplateID = 2) AND (SlobID = 743)
das Ergebnis I erhalten ist
TemplateID SlobID (From Year) (To year) Valid date
2 743 1 1 2016-01-01
2 743 1 99 2015-01-01
2 743 2 99 2016-01-01
der schwierige Teil ist, dass Wir benötigen eine Abfrage, um die neueste Version dieses Produkts zu erhalten. Die 1. Version (1/1/2015) wenn vom Jahr = 1 bis zum Jahr = 99 aber 2. Version erstellt am (1/1/2016) welche die Jahre vom Jahr 1 bis 1 und vom Jahr 2 bis 99 spaltet.
Also das richtige Ergebnis für mich sollte die folgende
TemplateID SlobID (From Year) (To year) Valid date
2 743 1 1 2016-01-01
2 743 2 99 2016-01-01
aber ich habe sein keine Ahnung, wie dies zu bekommen. Vielleicht sollte die neue Version am 1.1.2017 von Jahr = 1 bis Jahr = 10 und von Jahr = 11 bis Jahr = 99 oder etwas anderem sein.
Ich sehe nichts * extrem fortgeschritten * hier. – Parfait
Ich würde vorschlagen, eine Where-Klausel hinzufügen –
Sie wollen nur den Datensatz 1-99 loswerden? Warum? Was, wenn der 2-99 Rekord wirklich 3-99 war? Dann fehlt dir eine 2-2 Spannweite. Würde die 1-99 Aufzeichnung dann auf ein 2-2 mit einem '2015-01-01' Datum reduziert werden müssen? –