Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 仅为id确定一个日期_Sql_Sql Server 2008_Select - Fatal编程技术网

Sql 仅为id确定一个日期

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

我有一个表,其中有许多与一个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中显示行号(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;