I have a table and it's data looks like this:
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
I retrieve the max datetime with this query:
SELECT id,Max(date) as mymaxdate
FROM table1
group by id
This query givse me two rows like this:
1 2012-08-30 14:36:27.393
2 2012-08-30 16:36:27.393
It's correct, but how can i change it to retrieve this result?
1 b 2012-08-30 14:36:27.393
2 d 2012-08-30 16:36:27.393
Thanks
For 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;
One of the options:
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
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With