我继承了一个结构如下的表:
ID Name Timestamp Data
----------------------------
1 A 40 ...
2 A 30 ...
3 A 20 ...
4 B 40 ...
5 B 20 ...
6 C 30 ...
7 C 20 ...
8 C 10 ...
ID
Name
是一个身份字段和主键,并且有非唯一索引和 Timestamp
领域。获取每个项目名称的最新记录的最有效方法是什么,即在上面的表格中 1 , 4 和 6 应该返回,因为它们是项目的最新条目 一个 , 乙 和 C 分别。
最佳答案
SQL Server 2005(以后):
WITH MostRecentRows AS
(
SELECT ID, Name, Data,
ROW_NUMBER() OVER (PARTITION BY Name ORDER BY TimeStamp DESC) AS 'RowNumber'
FROM MySchema.MyTable
)
SELECT * FROM MostRecentRows
WHERE RowNumber = 1
关于sql - 从历史表中选择最近的状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/733660/