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