首页 > 解决方案 > id只有一个日期

问题描述

我有一张表,其中包含与一个 id 相关的许多记录,我只需要为每个 id 选择具有最新 StartDate 的一条记录。我怎样才能简单地做到这一点?例如,对于 id 5001145,我只需要选择开始日期为 2020-03-20 的行。 在此处输入图像描述

标签: sqlsql-server-2008select

解决方案


一个简单的方法是相关子查询:

select t.*
from t
where t.startdate = (select max(t2.startdate)
                     from t t2
                     where t2.id = t.id
                    );

另一个变体是row_number()

select t.*
from (select t.*,
             row_number() over (partition by id order by startdate desc) as seqnum
      from t
     ) t
where seqnum = 1;

推荐阅读