;WITH x AS ( SELECT p.*, PrevCardLevel = LAG(p.CardLevel) OVER (PARTITION BY p.PlayerId ORDER BY p.Revision), PrevBw2Id = LAG(p.Bw2Id) OVER (PARTITION BY p.PlayerId ORDER BY p.Revision) FROM dbo.rdPlayerMasterData p ) SELECT PlayerId, Revision, CardLevel, PrevCardLevel, Bw2Id, PrevBw2Id -- , FROM x WHERE PrevCardLevel IS NOT NULL AND CardLevel <> PrevCardLevel AND PrevBw2Id IS NULL AND Bw2Id IS NOT NULL AND LTRIM(RTRIM(Bw2Id)) <> '';