Sql server 是否按最近的数据筛选重复记录? 背景

Sql server 是否按最近的数据筛选重复记录? 背景,sql-server,Sql Server,我在一个表中有多条记录,除了创建该记录的数据外,有时还有重复的条目 我必须在重复记录之间进行选择,并更改最新日期记录(最后一个要创建的记录)的字段 目前,我正在通过目视检查日期手动执行此操作 问题: 这里有没有一种方法,只带回其中一个副本,一个离今天最近的副本 例子 下面是一个查询,它为一个stationID返回两组重复项。每个评估类型只能有一个记录。底部两条记录的isLive列将更改为True,因为它们具有最新的Filedate记录 SQL 返回的记录 您可以使用行号()功能来识别最新的行:

我在一个表中有多条记录,除了创建该记录的数据外,有时还有重复的条目

我必须在重复记录之间进行选择,并更改最新日期记录(最后一个要创建的记录)的字段

目前,我正在通过目视检查日期手动执行此操作

问题: 这里有没有一种方法,只带回其中一个副本,一个离今天最近的副本

例子 下面是一个查询,它为一个stationID返回两组重复项。每个评估类型只能有一个记录。底部两条记录的isLive列将更改为True,因为它们具有最新的Filedate记录

SQL 返回的记录

您可以使用
行号()功能来识别最新的行:

SELECT *
      ,CASE WHEN N = 1 THEN 'True'
                       ELSE 'False' END AS isLive
FROM (SELECT StationFileID
            ,StationID
            ,AssessmentType
            ,FileDate
            ,ROW_NUMBER() OVER (PARTITION BY StationID, AssessmentType ORDER BY FileDate DESC) AS N
FROM StationFiles
WHERE StationID = '1066') AS T

尝试使用
行编号
来识别每个StationID和AssessmentType的最新日期,然后更新isLive列,其中
行编号
=1?答案很好,是否可以允许编辑返回的记录?目前我无法改变它们。
SELECT *
      ,CASE WHEN N = 1 THEN 'True'
                       ELSE 'False' END AS isLive
FROM (SELECT StationFileID
            ,StationID
            ,AssessmentType
            ,FileDate
            ,ROW_NUMBER() OVER (PARTITION BY StationID, AssessmentType ORDER BY FileDate DESC) AS N
FROM StationFiles
WHERE StationID = '1066') AS T