MSSQL查找列值是否已更改相同的ID

时间:2016-02-01 20:10:29

标签: sql sql-server-2008 compare analytics

我有以下表格:

 EMP_ID | Color | StartDate  | EndDate
------------------------------------------
 1      | Black | 01/01/2010 | 01/01/2011
 1      | Black | 01/01/2012 | 01/01/2013
 1      | Green | 01/01/2014 | 01/01/2015
 2      | Black | 01/01/2010 | 01/01/2011
 2      | White | 01/01/2012 | 01/01/2013
 2      | Black | 01/01/2014 | 01/01/2015
 2      | Black | 01/01/2015 | 01/01/2016

我尝试做的是EMP_ID列值,如果颜色完全改变了,改变了什么,并按照EMP_ID的任何想法进行分组?

1 个答案:

答案 0 :(得分:0)

在更新版本的SQL中使用lag()函数更容易。有一种方法使用outer apply

select t.*
from t outer apply
     (select top 1 t2.*
      from t t2
      where t2.emp_id = t.emp_id and t2.startdate < t.startdate
      order by t2.startdate desc
     ) tprev
where tprev is null or tprev.color <> t.color