数据表aa中有列“记录内容,发生时间”,如何判断表中是否存在“数据记录排列连续且时间相同,同时数据条数在5条及以上”,如果判断存在这样连续的数据记录,就把他删除,如下表中,需把前面的5条删除,请问这样的sql语句如何写?
记录内容 发生时间
aa 2014-11-30 10:30:52
we 2014-11-30 10:30:52
yu 2014-11-30 10:30:52
rr 2014-11-30 10:30:52
bw 2014-11-30 10:30:52
qq 2014-11-30 10:35:42
pq 2014-11-30 10:35:48
------解决思路----------------------
;WITH CTE AS(SQL2005+有效
SELECT *,ROW_NUMBER()OVER(ORDER BY GETDATE())RN1
,ROW_NUMBER()OVER(PARTITION BY 发生时间 ORDER BY GETDATE())RN2
FROM TB
)
,CTE2 AS(
SELECT *,COUNT(1)OVER(PARTITION BY RN1-RN2)C FROM CTE
)
DELETE CTE2 WHERE C>=5
--查看删除后结果
SELECT * FROM TB