当前位置: 代码迷 >> Sql Server >> 请教这样的sql语句怎么写
  详细解决方案

请教这样的sql语句怎么写

热度:68   发布时间:2016-04-24 09:39:06.0
请问这样的sql语句如何写?
数据表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(
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
SQL2005+有效
  相关解决方案