对于每个操作

时间:2014-04-03 04:28:35

标签: sql sql-server

我有一个审核表(AUDIT),如下所示:

empid|division id|dept id|lastupdated
1|      A|             20|xxxxx
3|      C|             10|xxxxxx
6|      D|             10|xxxxxx
1|      D|             10|xxxxxx
1|      B|             10|xxxxxx
3|      E|             10|xxxxxx

对于此表中的每一行,我想将数据与前一个记录进行比较(基于最后更新日期)。
结果应该过滤记录,其中deptid在2个记录之间进行比较时不相等。

Pseudocode:

For each record in AUDIT t1
1.Select dept id,max(lastupdated) from AUDIT t2 where t1.lastupdated > t2.lastupdated
2.Select t1.empid if t1.deptid<> t2.deptid(from step 1)

这是否可以作为单个SQL查询 - 而不是临时表操作?

1 个答案:

答案 0 :(得分:0)

select  * from AUDIT a  inner join AUDIT b 
on a.empid = b.empid and a.[division id] = b.[division id] 
and  b.lastupdated =(select max(lastupdated) from AUDIT c where lastupdated < a.lastupdated) where a.deptid <> b.deptid