

按GPSTime排序,PassengerState连续,比如0变1(1变0),0和1最后一条记录都要保留。
不同VehicleSimID之间不参与比较
------解决思路----------------------
;WITH CTE AS(SQL2005+
SELECT *
,ROW_NUMBER()OVER(PARTITION BY VehicleSimID ORDER BY GPSTime)RN1
,ROW_NUMBER()OVER(PARTITION BY VehicleSimID,PassengerState ORDER BY GPSTime)RN2
FROM TB
)
,CTE2 AS(
SELECT *
,ROW_NUMBER()OVER(PARTITION BY VehicleSimID,RN1-RN2 ORDER BY GPSTime)RN
FROM CTE
)
SELECT VehicleSimID,GPSTime,PassengerState
FROM CTE2
WHERE RN=1
------解决思路----------------------
WITH t AS ( -- 分组排序号
SELECT *,
ROW_NUMBER()OVER(PARTITION BY VehicleSimID ORDER BY GPSTime) rn
FROM table1
)
-- 下一条不存在或下一条的PassengerState不同,就是重复的最后一条。
SELECT t1.*
FROM t t1
LEFT JOIN t t2
ON t1.VehicleSimID = t2.VehicleSimID
AND t1.rn = t2.rn - 1
WHERE t2.PassengerState IS NULL
OR t2.PassengerState <> t1.PassengerState