1
我想删除给定间隔内每个时间段内除最新内容以外的所有行。例如,假设我每两天都有一排,我选择月份作为给定的时间间隔。删除后,我会以24行结束,这两年是每个月的最后一天。重要的是日历对齐,而不是相对于当前日期。每个时间段删除除最新一行以外的所有内容
我该怎么做?
我想删除给定间隔内每个时间段内除最新内容以外的所有行。例如,假设我每两天都有一排,我选择月份作为给定的时间间隔。删除后,我会以24行结束,这两年是每个月的最后一天。重要的是日历对齐,而不是相对于当前日期。每个时间段删除除最新一行以外的所有内容
我该怎么做?
这应该做的伎俩:
DELETE DataToBeDeleted
FROM
(
SELECT
SomeDate,
ROW_NUMBER() OVER (PARTITION BY Year(SomeDate), Month(SomeDate)
ORDER BY SomeDate DESC) AS RankFromBack
FROM DayData
) DataToBeDeleted
WHERE DataToBeDeleted.RankFromBack > 1;
对于一个月相比其他时段,则需要调整划分和排序,以确保你的排名,你要保留的数据因此。
请注意,这也依赖于从单个表中的投影中删除。
您能否提供表结构和预期的输出示例? – StuartLC