0

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

1 回答 1

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;
于 2013-06-26T17:11:09.157 回答