我有以下表格:
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
的任何想法进行分组?
答案 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