我有一张桌子
TIMESTAMP ID Name
5/30/2016 11:45 1 Ben
5/30/2016 11:45 2 Ben
5/30/2016 23:15 2 Ben
5/30/2016 7:30 1 Peter
5/30/2016 6:05 1 Peter
5/30/2016 14:40 2 May
5/30/2016 1:05 1 May
现在,我需要为每个不同的名称获取MIN时间戳。 然后,如果有多个MIN条目,请选择具有MAX ID的条目。
所以结果应该是
TIMESTAMP ID Name
5/30/2016 11:45 2 Ben
5/30/2016 6:05 1 Peter
5/30/2016 1:05 1 May
我尝试使用以下查询:
SELECT MIN(TIMESTAMP),来自TBLSAMPLE的名称,时间为4月到5月之间(' 5/30 / 2016',' MM / DD / YYYY')和到时(' 5/30 / 2016',' MM / DD / YYYY')+ 1 按名称分组
我可以得到最短的时间。但是一旦我添加了MAX(ID),结果就会返回一个与任何行都不匹配的条目。
非常感谢您的帮助。
答案 0 :(得分:1)
您可以使用row_number()
:
select t.*
from (select t.*,
row_number() over (partition by name order by timestamp asc, id desc) as seqnum
from tblsample t
) t
where seqnum = 1;
您的问题未指明日期的条件。但是,如果要添加where
子句,请将其添加到子查询中。