tT SQL-根据日期筛选记录



我正在编写SQL Server查询,需要一个如何正确筛选返回的行的解决方案。

基本设置如下-我主要根据标识符从表中选择一组记录。因此,对于给定的标识符,最初可能会返回100条记录。然而,在这100条记录中,有许多记录需要删除——不是因为它们是重复的,而是因为其中一条比另一条更新。因此,我基本上只需要一种方法,根据最近创建/修改的记录来进一步过滤结果。

我知道,理想情况下,这些"旧"记录不应该在数据库中,但我无法控制这一点。实际上,人们会随着时间的推移更新条目以反映新信息,但每次都会输入一个新条目,而不是编辑"旧"条目。因此,给定的标识符可能有3个条目,但我只需要最近输入的那个。

有没有一种简单的方法可以在T-SQL查询字符串中做到这一点?它类似于Access查询中的"Last of"函数。我确实为每条记录都有一个格式正确的日期列。

谢谢!

到目前为止我的查询字符串(请原谅VB语法):

    "SELECT *" & _
    "FROM Performance_Override " & _
    "WHERE ([Deal_Name] = " & "'" & Range("ID").value & "'" & " or" & _
    " [UNIQUE_ID] LIKE " & "'" & "%SPLIT_LOAN%" & "')" & " AND" & _
    " ([Scenario] = " & "'" & "BASE" & "')" & _
    "ORDER BY [Date] ASC; "

选择

select ID, max(datefield) 
from table 
group by ID 

你只是需要一个选择,还是想真正删除旧条目?

WITH TableTop AS
(
    SELECT ID, User, OrderDate
    ROW_NUMBER() OVER (ID BY OrderDate DESC) AS RowNumber
    FROM Table
) 
SELECT ID, User, OrderDate  
FROM TableTop 
WHERE RowNumber = 1;

最新更新