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