quote: SELECT eventname, MAX(Status) AS Expr1, MAX(RecordUpdated) AS Expr2
This won't work because you don't want the max(status), you want the status of the max(RecordUpdated)Here is a few ways:set nocount ondeclare @eventQueue table (eventname varchar(10), status int, recordUpdated datetime)insert @eventQueue values ('tg', 10, getdate())insert @eventQueue values ('tg', 9, getdate()+1)insert @eventQueue values ('tg', 8, getdate()+2)insert @eventQueue values ('yak', 10, getdate())insert @eventQueue values ('yak', 9, getdate()+1)insert @eventQueue values ('yak', 8, getdate()+2);---------------------------------------------------------------2005with yak (eventName, status, rowNumber) as( select eventName ,status ,row_number() over (partition by eventName order by RecordUpdated desc) from @EventQueue)select eventName ,statusfrom yakwhere rownumber = 1order by eventName-------------------------------------------------------------select eventName ,substring(max(convert(char(23), RecordUpdated, 121) + convert(varchar,status)), 24, 10) as statusfrom @eventqueuegroup by eventNameorder by eventName-------------------------------------------------------------select eventName ,statusfrom @eventQueue eqwhere recordUpdated = (select max(recordUpdated) from @eventQueue where eventname = eq.eventName)order by eventNameoutput:eventName status---------- -----------tg 8yak 8eventName status---------- ----------tg 8yak 8eventName status---------- -----------tg 8yak 8Be One with the OptimizerTG |