日期:2014-05-16  浏览次数:20508 次

如何快速查找最近发生变化的数据
数据库为SQL SERVER 2008
现有一表TABLE,记录公司员工的部门变动与职务变动
表结构如下:
ID            NAME             DEPT(部门)              DUTY(职位)            TIME(变动时间)
0              TOM                IT                                    员工                                2011-4-15
0              TOM                IT                                    项目经理                        2013-4-15
0              TOM                IT                                    部门经理                        2014-4-15
1              RAY                IT                                     员工                                2013-4-15
1              RAY                HR                                  员工                                2014-4-15

如何快速查出所有最近两条记录中DURY发生变动的员工的记录
即:
TOM最近两条记录DUTY产生变化,需要被查询出来,而RAY的DUTY没有变化,则不需要

我现在用的语句是:
SELECT  * FROM TABLE AS A
WHERE (SELECT TOP 1 DUTY FROM TABLE WHERE ID = A.ID ORDER BY TIME DESC)
<> (SELECT TOP 1 FROM  (SELECT TOP 2 DUTY FROM TABLE WHERE ID = A.ID ORDER BY TIME DESC) ORDER BY TIME)