Gruppierung nach nur 1 Attribut bei SELECT *

Hallo,

ich habe eine Tabelle mit sehr vielen Spalten, unter anderem ID, nr, blatt, datum. Die Datensätze können wie folgt aussehen:

ID, nr, blatt, datum, …

1, 23, 1, 6.02.09, …
2, 23, 2, 2.02.09, …
3, 24, 1, 05.02.09, …
4, 25, 6, 01.01.09, …
5, 25, 6, 09.01.09, …

Gruppiert werden soll jetzt quasi nach dem neusten Datum innerhalb NR und BLATT. Somit müsste das Ergebnis folgendermaßen aussehen:

ID, nr, blatt, datum, …

1, 23, 1, 6.02.09, …
2, 23, 2, 2.02.09, …
3, 24, 1, 05.02.09, …
5, 25, 6, 09.01.09, …

Leider kann man mit Access nur eine Gruppierung über alle Spalten machen und bei SELECT * schonmal garnicht. Ich bräuchte also einen Ausdruck wie: SELECT * FROM tabelle GROUP BY nr, blatt HAVING max(datum)

Vielen Dank für etwaige Lösungsvorschläge.

Eine mögliche Lösung habe ich bereits gefunden, diese ist mir aber leider viel zu langsam aufgrund des 3-fach Joins!

SELECT *
FROM Tabelle
INNER JOIN
[SELECT nr, blattnr, Max(datum) AS MaxDatum FROM Tabelle GROUP BY nr, blatt]. AS MaxTab
ON (Tabelle .datum = MaxTab .MaxDatum)
AND (Tabelle.blatt = MaxTab.blatt)
AND (Tabelle.nr = MaxTab.nr);

Hallo,

mein erster Gedanke:

bei 100 Blatt:
SELECT * FROM tabelle GROUP BY (nr + (blatt/100)) HAVING max(datum)

oder bis zu 1000 Blatt:
SELECT * FROM tabelle GROUP BY (nr + (blatt/1000)) HAVING max(datum)

Grüße aus Schönberg (Lübeck)
Wolfgang
(Netwolf)

Keine Schlechte Idee, die Gruppierung auf SELECT * geht ja aber schon nicht. ;(. Und bei der großen Anzahl Spalten (die sich auch öfter Ändern können) habe ich keine Lust jedes Attribut einzeln anzugeben.

Hallo,

Keine Schlechte Idee, die Gruppierung auf SELECT * geht ja
aber schon nicht. ;(. Und bei der großen Anzahl Spalten (die
sich auch öfter Ändern können) habe ich keine Lust jedes
Attribut einzeln anzugeben.

du kannst ja den Abfrage-Generator von Access nutzen, dann musst du nicht so viel schreiben :smile:
Den SQL-String kannst du dir ja dann rauskopieren.

Grüße aus Schönberg (Lübeck)
Wolfgang
(Netwolf)