Rolf b: SELECT Datensatz mit Datumsbereich

Beitrag lesen

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:

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:

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