我有一个表,它的数据如下所示:
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)
谢谢
对于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)