Obtenir uniquement les derniers loggings de la table dans SQL Server

J'ai une table qui contient plusieurs loggings d'un user particulier avec datetime, mon exigence est que je n'ai besoin que du dernier logging par requête. Je ne sais pas comment get ce type de données.

Table

Create Table tblReport( USERID LONG, ReportDateTime Datetime ) 

Enregistrements actuels

 USERID ReportDateTime 1 2017-04-18 21:41:33.903 4 2017-04-20 01:16:00.653 4 2017-04-26 20:00:20.497 71 2017-04-17 22:31:37.437 4 2017-04-26 20:01:20.933 225 2017-04-20 00:58:10.253 225 2017-04-25 23:09:34.433 1 2017-04-18 23:35:00.567 

Sortie désirée

 USERID ReportDateTime 1 2017-04-18 23:35:00.567 4 2017-04-26 20:01:20.933 71 2017-04-17 22:31:37.437 225 2017-04-25 23:09:34.433 

Ma requête

 select USERID,max(ReportDateTime) from tblReport group by USERID, ReportDateTime order by USERID 

Supprimez ReportDateTime de votre group by .

 select UserId , ReportDateTime = max(ReportDateTime) from tblReport group by userid order by userid 

rextester demo: http://rextester.com/CLQ69624

résultats:

 +--------+-------------------------+ | UserId | ReportDateTime | +--------+-------------------------+ | 1 | 2017-04-18 23:35:00.567 | | 4 | 2017-04-26 20:01:20.933 | | 71 | 2017-04-17 22:31:37.437 | | 225 | 2017-04-25 23:09:34.433 | +--------+-------------------------+ 

Une autre option consiste à utiliser la clause With Ties

 Select Top 1 With Ties * From tblReport Order By Row_Number() over (Partition By UserID Order by ReportDateTime Desc)