SELECT Datensatz mit Datumsbereich
bearbeitet von Matthias Apselich will ja nicht den MAX Wert. Ich möchte ein bestimmtes Datum (was auch in der Vergangenheit liegen kann), und wenn es das nicht gibt, dann nehme die Werte einen Tag zuvor usw...
> Geht alles mit nackigem SQL.
> Ich nehme mal an, dass deine Tabelle irgendwie so aussieht:
>
> ~~~
> Maschine int
> Meldezeit datetime
> Wert1 int
> Wert2 int
> Wert3 int
> ~~~
>
> Dann liefert dir diese Query das höchste bekannte Datum, zu dem eine Maschine gemeldet hat:
>
> ~~~sql
> SELECT Maschine, CAST(MAX(Meldezeit) as DATE) as MaxDate
> FROM Meldungen
> GROUP BY Maschine
> ~~~
>
> Diese Query kannst Du als Subquery verwenden und mit deiner Tabelle Joinen:
>
> ~~~sql
> SELECT m.Maschine, m.Meldezeit, m.Wert1, m.Wert2, m.Wert3
> FROM Meldungen m
> JOIN (SELECT Maschine, CAST(MAX(Meldezeit) as DATE) as MaxDate
> FROM Meldungen
> GROUP BY Maschine) r
> ON m.Maschine = r.Maschine AND CAST(m.Meldezeit as DATE) = r.MaxDate
> ~~~
>
> Ergebnis: Zu jeder Maschine bekommst Du die Meldungen zum letzten bekannten Tag. Das kannst Du jetzt noch mit ORDER BY und werweißwasnoch nach Belieben pimpen.
>
> _Rolf_