SQL:如何在max datetime的基础上为多个id选择单个记录?

Pra*_*ant 6 sql join sql-server-2005 greatest-n-per-group

我有以下SQL表,

Id      WindSpeed      DateTime
--------------------------------------
1       1.1            2009-09-14 16:11:38.383
1       1.9            2009-09-15 16:11:38.383
1       2.0            2009-09-16 16:11:38.383
1       1.8            2009-09-17 16:11:38.383
1       1.7            2009-09-19 16:11:38.382
2       1.9            2009-09-19 16:11:38.383
1       1.6            2009-09-19 16:11:38.383
2       1.2            2009-09-20 16:11:38.383
Run Code Online (Sandbox Code Playgroud)

我想编写一个查询,它将从上表返回以下结果集:

Id      WindSpeed      DateTime
--------------------------------------
1       1.6            2009-09-19 16:11:38.383
2       1.2            2009-09-20 16:11:38.383
Run Code Online (Sandbox Code Playgroud)

以上reuslt包含最新的(基于该id的最新日期时间)单个条目.这意味着我有多个记录ID与日期时间.

我想得到所有id的最新单一条目.

Max*_*erl 11

SELECT        a.Id, a.WindSpeed, a.DateTime
FROM          YourTable AS a
INNER JOIN     
(
    SELECT    ID, Max(DateTime) AS DateTime
    FROM      YourTable
    GROUP BY  ID
) AS b
ON            a.ID = b.ID
AND           a.DateTime = b.DateTime
Run Code Online (Sandbox Code Playgroud)


man*_*nji 5

SELECT t1.Id, t1.WindSpeed, t1.DateTime
  FROM table1 As t1
 WHERE t1.DateTime = (SELECT Max(DateTime)
                       FROM table1 As t2
                      WHERE t2.ID = t1.ID)
Run Code Online (Sandbox Code Playgroud)