我有一张桌子,它的数据如下:
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
我使用此查询检索最大日期时间:
SELECT id,Max(date) as mymaxdate
FROM table1
group by id
这个查询向我提供了两行:
1 2012-08-30 14:36:27.393
2 2012-08-30 16:36:27.393
这是正确的,但如何更改它以检索此结果?
1 b 2012-08-30 14:36:27.393
2 d 2012-08-30 16:36:27.393
由于
答案 0 :(得分: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;
答案 1 :(得分:2)
其中一个选项:
select
t1.id
,t1.name
,t1.date
from
table1 t1
inner join (
SELECT id,Max(date) as mymaxdate
FROM table1
group by id
) mt1
on t1.id = mt1.id
and t1.date = mt1.mymaxdate