2015-05-04 4 views
0

Как я могу получить последнюю запись?
Я использую MAX(DateTime) и GROUP BY, но не получаю данные, которые мне нужны.Получить последние данные по дате и времени

Вот пример данных

DateTime    | ID  | Name 
2014-09-25 07:36:45.193 | 987302 | Allan 
2014-09-25 07:36:45.310 | 987303 | Allan 
2014-09-25 07:37:31.180 | 987304 | Allan 
2014-09-25 07:38:45.193 | 987305 | Jenny 
2014-09-25 07:39:45.310 | 987306 | Jenny 
2014-09-25 07:40:31.180 | 987307 | Jenny 

результат должен отображать

2014-09-25 07:37:31.180 | 987304 | Allan 
2014-09-25 07:40:31.180 | 987307 | Jenny 
+1

Какой SQL вы уже пробовали? –

+0

SELECT Max (DateTime) в качестве DateTime, ID, Name FROM tblTimesheetEntry GROUP BY ID, Name – user1647667

+0

Также отредактируйте свой вопрос, чтобы указать, какую версию SQL вы используете, добавив соответствующий тег (ы) – Dijkgraaf

ответ

1

Похоже, причина вы не получаете ожидаемого результата, потому что [Id] является уникальным, и вы включаете его в предложение GROUP BY. Пожалуйста, дайте следующую попытку:

SELECT [a].[DateTime], [t].[Id], [a].[Name] 
FROM (
    SELECT MAX([DateTime]) AS [DateTime], [Name] 
    FROM [table] 
    GROUP BY [Name] 
) AS [a] 
JOIN [table] AS [t] 
ON [a].[DateTime] = [t].[DateTime] 
AND [a].[Name] = [t].[Name] 

, как указано ниже Эриком, если есть дубликат DateTime/Name вы можете изучить другие варианты.

+0

Это может сломаться, если 'DateTime' и 'Name' имеет дубликаты – Eric

+0

@ Landscape Penguine - Что делать, если я хочу получить не последние данные, а оставшиеся данные. – user1647667

+0

Поскольку не указано ни одного dbms, двойные кавычки вместо квадратных скобок будут еще лучше! – jarlh

-1

SELECT MAX (DateTime) в DateTime, ID, имя из tblTimesheetEntry GROUP BY имя

Я предполагаю, что это нужно сделать, как вы смотрите на группировке по имени.

+2

Я не думаю, что идентификатор действителен в списке выбора, поскольку он не содержится в агрегатной функции или в предложении GROUP BY. –

Смежные вопросы