TSQL: letzten Datensatz einer Gruppe

PeterE

Grünschnabel
Hallo Forum,

ich benötige einen Tip zu TSQL. Folgendes Problem:

Select Kundenname, Datum, KZ1, KZ2
from Kundentabelle
order by Kundenname, Datum

ERGEBNIS:
Braun, 20091101, A, X
Braun, 20091202, A, B
Schmitz, 20090315, B, C
Schmitz, 20090502, A, F
Schmitz, 20090502, A, X
Schmitz, 20090502, A, Y
.
.
.

Wie muss das SQL-Statement aussehen damit ich nur einen der jüngsten Einträge eines Kunden bekomme unabhängig davon womit die Spalten KZ1 und KZ2 gefüllt sind.

SOLLERGEBNIS
Braun, 20091202, A, B
Schmitz, 20090502, A, Y
.
.
.

Wobei, welcher der 3 Datumsgleichen 'Schmitz' - Datensätze aus dem Beispiel im Ergebnis erscheint ist unerheblich, wichtig ist das nur einer erscheint.

Wäre für nen Tip dankbar. :)

PeterE
 
Zuletzt bearbeitet:
Moin!
Beispielsweise so (sofern Kundennr den Datensatz eindeutig identifziert):
Code:
Select a.Kundennr, a.Datum, a.KZ1, a.KZ2 from Kundentabelle a where a.Datum = 
(select max(b.Datum) from Kundentabelle b where a.Kundennr = b.Kundennr)order by Kundennr, Datum

Grüße!
 
Moin!
Beispielsweise so (sofern Kundennr den Datensatz eindeutig identifziert):
Code:
Select a.Kundennr, a.Datum, a.KZ1, a.KZ2 from Kundentabelle a where a.Datum = 
(select max(b.Datum) from Kundentabelle b where a.Kundennr = b.Kundennr)order by Kundennr, Datum

Grüße!
Hallo Artorius, die Kundennummer identifiziert den Datensatz nicht eindeutig (in meinem Beispiel 'Braun' und 'Schmitz' - ich weiss blöde Kundennummern) - zu jedem Kunden gibt es mehere Datensätze mit unterschiedlichem Datum und Einträgen in den Spalten KZ1 und KZ2
 
Ah sorry,
war ein bisschen falsch formuliert meinerseits. Nochmal neu gesagt, wenn du nur den neusten Eintrag eines eines Kunden haben möchtest, dann sollte mein Beispiel schon passen..

Grüße!
 
Habe das Beispiel nochmal angepasst. Leider gibt es auch Datensätze mit gleichem Datum je Kunde ist mir vorher nicht aufgefallen. Sorry
 
So,
was besseres fehlt mir nun auch gerade nicht ein:
Code:
Select a.Kundennr, a.Datum from Kundentabelle a where a.Datum = 
(select max(b.Datum) from Kundentabelle b where a.Kundennr = b.Kundennr) group by a.Kundennr, a.Datum order by Kundennr, Datum

Grüße!
 
Danke erstmal für die schnelle Hilfe.

Das Beispiel funktioniert solang ich nicht die Spalten KZ1 und KZ2 hinzunehme, dann bekomm ich wieder zu jedem unterschiedlichem Eintrag in KZ1 und KZ2 einen Datensatz (3 x 'Schmitz')

Gruß
 

Neue Beiträge

Zurück