T-SQL - 根据日期过滤记录

时间:2013-06-26 17:05:18

标签: sql tsql filtering

我正在编写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; "

1 个答案:

答案 0 :(得分:0)

选择

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;