MS Access/SQL - Nur die Einträge anzeigen, die das letzte Datum haben anhand ihrer ID.

2 Antworten

Das geht am besten mit einem Subselect:

SELECT * FROM tabelle WHERE datum = (SELECT MAX(datum) FROM tabelle)

Statt *** kannst auch einzelne Spalten aus Deiner Tabelle angeben, Sowohl den Select als auch den Subselect (das ist der in Klammern) kannst mittels WHERE mit Bedingungen versehen.

Arbeitsweise:

Der Subselect ermittelt das letzte Datum der Tabelle oder wenn eine Bedingung angegeben wird, das letzte Datum der eingeschränkten Menge. Der Hauptselect wählt nun die Sätze aus, die dieses Datum haben. Wenn Bedingungen angegeben werden, muss darauf geachtet werden, dass die Mengen sich entsprechen, also nicht das Datum von irgendeiner Menge verwendet wird, die für die eigentliche Auswahl nicht relevant ist. Die Abfrage funktioniert nämlich auch mit einem falschen Datum.

select reportid, max(reportdate) from ... group by reportdate order by reportid

vorausgesetzt, reportdate ist vom type DATE.

gruß, max.


PhoenixGraz 
Fragesteller
 29.10.2014, 11:45

Danke, und wie würde ich das im Parameterfeld unter Kriterien eingeben bei dem Query? Habe hier nun [reportid], [reportdate] - leider nimmt es kein SQL Statement an, deswegen habe ich es über die Summe mal probiert: Bei reportdate habe ich auf Max gestellt, nun zeigt es mir aber alle an (also auch reportid mehrfach mit dem jeweiligen Datum, obwohl ich nur das letzte Datum einer einzelnen reportid sehen will). Gibt es hier eine einfachere Lösung das richtig darstellen zu lassen?

0
PhoenixGraz 
Fragesteller
 04.11.2014, 23:47
@PhoenixGraz

Das funtioniert zwar, allerdings wenn ich andere Spalten zusätzlich anzeigen will zeigt es mir wieder alle Zeilen und nicht nur die gewollten. Wie kann ich das umgehen?

0