T-SQL:删除基于一个独特的日期列

24日记录我有一个表有许多时间戳条目(timestamp列命名为“零零”)的值的记录。T-SQL:删除基于一个独特的日期列

我希望定期从表比DATED列中的最后24个日期不同年长删除旧条目。

所以我试图写一个删除查询 谁的WHERE子句解析(日期< [第24届鲜明日期二零零从])

我不想设计查询删除记录比旧x天。 我想该表始终保持,即使他们是旧的记录24个的记录集。

任何意见?

回答:

随着Coomon Table Expression的帮助和Window Function你可以得到你想要的东西。

  • TSQL Ranking Function

对于SQL Server 2005

WITH recordList 

AS

(

SELECT *,

DENSE_RANK() OVER (PARTITION BY convert(varchar(20), DATED, 102)

ORDER BY DATED DESC) rn

FROM TableName

)

DELETE FROM recordList

WHERE rn > 24

对于SQL Server 2008+

WITH recordList 

AS

(

SELECT *,

DENSE_RANK() OVER (PARTITION BY CAST(DATED AS DATE)

ORDER BY DATED DESC) rn

FROM TableName

)

DELETE FROM recordList

WHERE rn > 24

回答:

DELETE FROM TABLE 

WHERE ID IN

(

SELECT ID

FROM

(

SELECT ID, ROW_NUMBER() OVER (PARTITION BY DATE DESC) RN

FROM TABLE

) A

WHERE RN > 24

)

以上是 T-SQL:删除基于一个独特的日期列 的全部内容, 来源链接: utcz.com/qa/265653.html

回到顶部