比较同一个表中的最新行

时间:2011-10-25 14:19:54

标签: sql-server-2005

我有一个福利登记应用程序,我需要提取给定年份的最新历史记录,并将其与另一个特定年份的最新历史记录进行比较,并确定哪些(如果有)字段已更改。

我一直在尝试包含OVER(PARTITION ...子句)的多种解决方案(一些在这里找到)。不幸的是我的SQL版本(2005)/管理工作室并不欣赏它是一个很好的工具因为很快因为它验证了我的代码,它会立即退出。

所以这就是我所拥有的:

    SELECT * FROM 
        (SELECT empID, ssn, fname, minitial, lname, email, dob, 
         gender, wkPh, maritalStatus, 
         ROW_NUMBER() OVER (PARTITION BY empID ORDER BY lastUpdate DESC)
                 AS ranking
         FROM empHistory  WHERE (benYr = 2011))
     T WHERE ranking=1

还没有比较两行,因为我似乎无法获取数据甚至一年。

有关正在发生的事情或替代/更好的方法来获取我需要的数据的任何想法?

编辑:正在重新安装SSMS但同时...这个reimmagined查询会返回相同的信息吗?或者只有当给定的empID有多行时才返回数据?

 SELECT empID, ssn, fname, minitial, lname, email, dob, gender, wkPh, maritalStatus, benYr FROM empHistory AS a WHERE (benYr = '2011') AND (lastUpdate = (SELECT MAX(lastUpdate) AS Expr1 FROM empHistory AS b WHERE (a.empID = empID))) 

重新安装SSMS无效。

但是,我在表中运行查询,并且发现当我通过启动新查询来运行查询时,它运行正常 - 这是预期的结果吗?

0 个答案:

没有答案