--Возвращенной идентификатор группы и последнюю дату в этой группе
select id
, MAX([date]) [latestDateInGroup]
from tbl
group by id
--Возвращенной идентификатор группы и соответствующий статус и дату записи с последней датой в этой группе
select id
, [status] [latestDateInGroup'sStatus]
, [date] [latestDateInGroup]
from
(
select id
, [status]
, [date]
, row_number() over (partition by id order by [date] desc) r
from tbl
) x
where x.r = 1
--Возвращенная всех идентификаторов и статусов, вместе с последней датой в группе этой группы (требуется SQL 2012+)
select id
, [status]
, max([date]) over (partition by id order by [date] desc) [latestDateInGroup]
from tbl
SQL Fiddle в автономном режиме в данный момент; когда резервное копирование следующего код позволит вам построить таблицу, чтобы проверить вышеуказанные вопросы с http://sqlfiddle.com
create table tbl ([date] date, id bigint, [status] nvarchar(4))
go
insert tbl select '2013-01-01', 55555, 'high'
insert tbl select '2014-01-01', 55555, 'low'
insert tbl select '2010-01-01', 44444, 'high'
insert tbl select '2011-01-01', 33333, 'low'
@lurker: OP не хочет никакого статуса, но один из последней даты –
Выбрать дату, идентификатор, статус от t1, (выберите id, max (date) maxdate group по id) как g1, где t1.id = g1.id и t1.date = g1.maxdate –
ответ не комментарий :) – Jester