Sql 仅为id确定一个日期
我有一个表,其中有许多与一个id相关的记录,我只需要为每个id选择一个具有最新开始日期的记录。我如何简单地做到这一点? 例如,对于id 5001145,我只需要选择起始日期为2020-03-20的行。Sql 仅为id确定一个日期,sql,sql-server-2008,select,Sql,Sql Server 2008,Select,我有一个表,其中有许多与一个id相关的记录,我只需要为每个id选择一个具有最新开始日期的记录。我如何简单地做到这一点? 例如,对于id 5001145,我只需要选择起始日期为2020-03-20的行。 一个简单的方法是关联子查询: select t.* from t where t.startdate = (select max(t2.startdate) from t t2 where t2.id = t.id
一个简单的方法是关联子查询:
select t.*
from t
where t.startdate = (select max(t2.startdate)
from t t2
where t2.id = t.id
);
另一个变体是行编号()
:
非常感谢,是否有可能不在select中显示行号(sequm)?@sear1234。您可以选择所需的列或使用第一种方法(如果您在
(id,startdate)
上有索引,则可能会快一点)。
select t.*
from (select t.*,
row_number() over (partition by id order by startdate desc) as seqnum
from t
) t
where seqnum = 1;