2017-04-26 5 views
1

Ich habe eine Tabelle, die mehrere Datensätze eines bestimmten Benutzers mit Datetime enthält, meine Anforderung ist, dass ich nur den neuesten Datensatz durch Abfrage benötigen. Ich weiß nicht, wie ich diese Art von Daten bekomme.Erhalten Sie nur die neuesten Datensätze aus der Tabelle in SQL Server

Tabelle

Create Table tblReport(
USERID LONG, ReportDateTime Datetime 
) 

Aktuelle Anzeige

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 

gewünschte Ausgabe

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 

Meine Suche

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

Antwort

2

entfernen ReportDateTime von Ihrem group by.

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

rextester Demo: http://rextester.com/CLQ69624

kehrt:

+--------+-------------------------+ 
| 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 | 
+--------+-------------------------+ 
+0

besser nutzen, um den mehr Standard „MAX (ReportDateTime) AS [ReportDateTime] "Syntax. Aber ansonsten, ja, genau das. – pmbAustin

+4

@pmbAustin Definiere besser? Sie führen das gleiche aus. Man ist ANSI-Standard wahr, aber ich weiß nicht, ob das "besser" macht. [Schlechte Gewohnheiten zu kicken: Verwenden von AS statt = für Spalten Aliase - Aaron Bertrand] (http://sqlblog.com/blogs/aaron_bertrand/archive/2012/01/23/bad-habits-to-kick-using-as -inspe-of-for-column-aliases.aspx) – SqlZim

+0

das ist fantastisch, wie ich fehlte? – Anjyr

1

Eine weitere Option ist mit dem mit Riegeln Klausel

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

danke für die neue Sache – Anjyr

+1

@Anjyr Dann ist das eine gute Sache. Ich lerne jeden Tag etwas Neues auf dieser Seite. Deshalb bin ich ein RIESIGER Fan. –

Verwandte Themen