SELECT Datensatz mit Datumsbereich
bearbeitet von Matthias ApselDanke
> 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.
>
> ~~~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
> 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:
>
> ~~~sql
> 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:
>
> ~~~sql
> 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_