Zitat von
Elvis:
Als Erbchleicher wäre wahrscheinlich eine Liste der Ids aller Preise ausreichend um bereits vorher geholte Instanzen der Preise wiederzufinden:
SQL-Code:
SELECT p.Id
FROM Artikel a
INNER JOIN Preise p ON p.Artikel = a.ID
INNER JOIN Preise filter ON p.Artikel = a.ID
WHERE filter.Datum <= @Suchdatum
GROUP BY p.Id, p.Datum
HAVING p.Datum = max(filter.Datum)
So in der Art hab ich da jetzt auch gelöst, nur anders
Ich hab mir als Erstes eine temporäre View erstellt:
SQL-Code:
create view vwPreiseHeuteTemp
as
SELECT fiArtikel, ISNULL(MAX(Datum), GETDATE() AS Datum, EKVK
FROM dbo.Preise
WHERE (Datum <= GETDATE())
GROUP BY fiArtikel, EKVK
HAVING (MAX(Datum) <= GETDATE())
Für die eigentlich Abfrage greif ich dann über joins auf diese View zu, weil ich noch aus anderen Tabelle etliches Zeusch brauch. Aber im Grunde ist obige temporäre View schon das, was das Problem löst.