Rolf b: SELECT Datensatz mit Datumsbereich

Beitrag lesen

Entschuldige bitte, dass ich deine Anforderung ungenau gelesen und dann noch deine SQL Grundkenntnisse überschätzt habe.

Für den 01.11.2016 machst Du es so.

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
             WHERE CAST(Meldezeit  AS DATE) <= '2011-11-01'
             GROUP BY Maschine) r
       ON m.Maschine = r.Maschine AND CAST(m.Meldezeit as DATE) = r.MaxDate

Du kannst Dir den CAST() in der Where-Bedingung sparen, wenn Du sie mit "<" statt "<=" formulierst:

WHERE Meldezeit < '2016-11-02'

aber um den Preis, dass Du vorher einen Tag aufs Vergleichsdatum aufaddieren musst.

Du kannst diesen Tag auch vom SQL Server addieren lassen:

WHERE Meldezeit < DATEADD(DAY, 1, '2016-11-01'

dann hast Du das gewünschte Datum klar in der Query stehen.

Was davon jetzt die "richtigste" Lösung ist, hängt auch davon ab, wie Du die Query nutzt. Ist sie in ein Programm eingebettet?

Rolf