Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MSSQL 2008:按特定字段获取上次更新的记录_Sql_Sql Server_Sql Server 2008 - Fatal编程技术网

MSSQL 2008:按特定字段获取上次更新的记录

MSSQL 2008:按特定字段获取上次更新的记录,sql,sql-server,sql-server-2008,Sql,Sql Server,Sql Server 2008,我在MSSQL中有一个名为内容的简化表: ContentID UpdatedAt FileID 1 2014-01-01 00:00:00 File-A 1 2014-02-02 00:00:00 File-B 1 2014-03-03 00:00:00 File-B 2 2012-12-30 00:00:00 File-X 2

我在MSSQL中有一个名为内容的简化表:

ContentID     UpdatedAt               FileID
1             2014-01-01 00:00:00     File-A
1             2014-02-02 00:00:00     File-B
1             2014-03-03 00:00:00     File-B
2             2012-12-30 00:00:00     File-X
2             2012-12-31 00:00:00     File-Y
我希望达到以下目标:

ContentID     UpdatedAt               FileID
1             2014-02-02 00:00:00     File-B
2             2012-12-31 00:00:00     File-Y
从表内容中获取每一行,其中FileID与以前的版本相比已更新。结果应如下所示:

ContentID     UpdatedAt               FileID
1             2014-02-02 00:00:00     File-B
2             2012-12-31 00:00:00     File-Y
到目前为止,我所尝试的:

寻找不同的解决方案,发现了滞后函数,这似乎是有希望的。但是,该功能似乎仅在MSSQL 2012中可用,因为错误是并行数据仓库PDW功能处于未启用状态。 我试着绕着游标转,但由于我对此一无所知,所以我找不到运行的解决方案。 很多嵌套查询,呃。。。由于每次更新都会创建一个新行,因此我假设由于性能原因,嵌套查询不是最佳选择。
在SQLServer2012中,您只需要使用lag。您可以在SQLServer2008中以各种方式复制此功能。以下是使用交叉应用的方法:


谢谢戈登,这正是我想要的。另一个新功能被学习。不幸的是,我不得不进行更新。由于问题有点不同,我提出了一个新问题: