Я ищу запрос, который дает мне для каждого идентификатора последнюю запись (на основе даты, которая дана, и отметки времени).SQL Server query; последняя запись для каждого ID
В моем случае идентификатор «knr», поэтому мне нужна последняя запись каждого KNR в event_ap (совпадающая с pers_stm для получения имен). Im только смог получить этот результат для 1 ID, но не для всех из них.
У меня есть эти таблицы (только примеры, обе таблицы имеют более 10000 entrys)
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
Что я хочу это
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
мой запрос до сих пор это. Но, очевидно, с этим я получил только последнюю запись одного ID, а не все, что соответствует условию WHERE
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
Спасибо за ваши ответы
, потому что запись была сделана на 2017-01-22, им нужны только значения от 23.01.2017, то есть 2017-01-23 –
есть логика, которая гарантирует, что '(knr, date, time) 'уникально, или ваш вывод запроса должен учитывать две« последние »записи с соответствующими значениями? –
Подождите, вам нужна максимальная дата-время или просто максимальное время для заданной даты? –