tsql -group by by max datetime in rows

mot*_*deh 4 t-sql

我有一个表,它的数据如下所示:

 id         name       date
 ---------  ---------  ----------
 1          a          2012-08-30 10:36:27.393
 1          b          2012-08-30 14:36:27.393
 2          c          2012-08-30 13:36:27.393
 2          d          2012-08-30 16:36:27.393
Run Code Online (Sandbox Code Playgroud)

我使用此查询检索最大日期时间:

SELECT id,Max(date) as mymaxdate
FROM table1
group by id
Run Code Online (Sandbox Code Playgroud)

这个查询向我提供了两行,如下所示:

1     2012-08-30 14:36:27.393
2     2012-08-30 16:36:27.393
Run Code Online (Sandbox Code Playgroud)

这是正确的,但我如何更改它以检索此结果?

1   b  2012-08-30 14:36:27.393
2   d  2012-08-30 16:36:27.393
Run Code Online (Sandbox Code Playgroud)

谢谢

Joe*_*lli 8

对于SQL Server 2005+

WITH cteMaxDate AS (
    SELECT id, name, date, 
           ROW_NUMBER() OVER(PARTITION BY id ORDER BY date DESC) AS RowNum
        FROM table1
)
SELECT id, name, date
    FROM cteMaxDate
    WHERE RowNum = 1;
Run Code Online (Sandbox Code Playgroud)