ich suche nach einer Abfrage, die mir für jede ID den letzten Datensatz (basierend auf Datum, das gegeben ist, und Zeitstempel).SQL Server-Abfrage; Letzter Datensatz für jede ID
In meinem Fall ist die ID "knr", also ich möchte den letzten Datensatz von jedem KNR in event_ap (mit pers_stm abgestimmt, um die Namen zu erhalten). Ich bin nur in der Lage, dieses Ergebnis für 1 ID zu erhalten, aber nicht für alle von ihnen.
Ich habe diese Tabellen (nur Beispiele, beide Tabellen haben über 10 Tausend Einträge)
event_ap
Ereignis a_nr tnr date time knr maschnr
PAN 123 2203 2017-01-23 8:00 11 x222
PAN 132 2203 2017-01-22 8:00 22 x222
PAB 123 2203 2017-01-23 9:00 11 x222
PAN 555 2203 2017-01-23 6:00 33 x222
PAN 555 2201 2017-01-23 11:00 44 x222
PAB 222 2202 2017-01-23 10:00 44 x222
pers_stm
name knr
Test1 11
Test2 22
Test3 33
Test4 44
Was ich will diese
Ereignis tnr date time knr name maschnr
PAB 2203 2017-01-23 9:00 11 Test1 x222
PAN 2203 2017-01-23 6:00 33 Test3 x222
PAN 2201 2017-01-23 11:00 44 Test4 x222
meine Abfrage dies so weit ist. Aber natürlich, mit diesem bekam ich nur die letzte Aufzeichnung einer ID, nicht von allen, die die WHERE-Klausel entsprechen
SELECT TOP 1 A.Ereignis, A.tnr, A.date, A.time, A.knr, A.maschnr, B.name
FROM event_ap AS A
JOIN pers_stm AS B on A.knr = B.knr
WHERE A.knr = '11' AND A.date = CONVERT(DATETIME, '23.01.2017') ORDER BY A.time DESC
Sie für Ihre Antworten danken
weil der Datensatz wurde am 2017-01-22 gemacht, bin ich nur auf der Suche nach Werten vom 23.01.2017 das ist 2017-01-23 –
ist es Logik, die gewährleistet, dass (knr, Datum, Zeit) 'ist einzigartig, oder muss Ihre Abfrageausgabe zwei" letzte "Datensätze mit übereinstimmenden Werten berücksichtigen? –
warten Sie, benötigen Sie die maximale Datum-Zeit oder nur die maximale Zeit für ein bestimmtes Datum dann? –