Допустим, у меня есть следующая таблица примеров
GroupID ItemID Created
-----------------------------------------------
A ABC 5/1/2009 13:02
A XZY 5/1/2009 13:01
A LMO 5/1/2009 13:03
A DEF 5/1/2009 13:00
A PQR 5/1/2009 13:04
B WXY 5/1/2009 13:02
B HIJ 5/1/2009 13:03
B STU 5/1/2009 13:01
Как я могу вернуть первый ItemID для каждой группы на основе столбца Created? Мне нужен запрос, чтобы вернуть следующее:
GroupID ItemID Created
-----------------------------------------------
A DEF 5/1/2009 13:00
B STU 5/1/2009 13:01
В наборе данных, с которым я работаю, может быть от нескольких тысяч до нескольких миллионов строк, поэтому я хотел бы по возможности избежать дорогостоящих подзапросов. Я думал, может быть, я смогу сделать это с помощью внутреннего соединения, но мои первые попытки привели к моей собственной путанице.
Редактировать: Пока у меня есть следующее:
select t2.ItemID, count(*) from
(select GroupID, min(created) as created from table) t1
inner join table t2 on t1.created = t2.created
group by t2.itemid
Есть причина, по которой это не сработает? Это медленнее, чем хотелось бы, но обновляет сводную таблицу, так что это не такая уж большая проблема.