Try this & see if it provides you with desired result(i've not tested this):-;With Num_CTE (RowNo,ID1,ID2,EffDate,EndDate) as(SELECT ROW_NUMBER() OVER (PARTITION BY tmp.ID1,tmp.ID2,tmp.CompDt ORDER BY Effdt) AS 'RowNo', tmp.ID1, tmp.ID2, tmp.EffDt, DATEADD(d,-1,tmp.CompDt)FROM ( SELECT t1.ID1,t1.ID2,t1.EffDt,t2.CompDt FROM #source t1 CROSS APPLY ( SELECT MIN(EffDt) AS 'CompDt' FROM #source WHERE ID1 = t1.ID1 AND ID2 <> t1.ID2 AND EffDt > t1.EffDt)t2 )tmp)SELECT * FROM Num_CTE WHERE RowNo =1