【发布时间】:2023-01-28 01:31:55
【问题描述】:
我有一个包含 ID、日期和值的表。我想始终根据 90 天窗口内的 ID 合并记录。在下面的示例中,这些是用相同颜色标记的行。
最终结果应如下所示:
RowId 1 的条目打开 ID 133741 的 90 天窗口。RowId 2 和 3 在此窗口中,因此应与 RowId 1 聚合在一起。
RowId 4 在 2 和 3 的 90 天窗口中,但由于它在 1 的窗口之外,因此不应再与它们聚合,而应将其视为新的 90 天窗口的开始。由于此窗口中没有其他条目,因此它保持为一行。
第 5 行的日期明显在其他条目的 90 天窗口之外,因此也单独汇总。就像第 6 行一样,因为这是一个不同的 ID。
下面是一些示例代码:
create table #Table(RowId int, ID nvarchar(255) , Date date, Amount numeric(19,1));
insert into #Table values
('1','133742', '2021-07-30', '1.00' ),
('2','133742', '2021-08-05', '3.00' ),
('3','133742', '2021-08-25', '10.00' ),
('4','133742', '2021-11-01', '7.00' ),
('5','133742', '2022-08-25', '11.00' ),
('6','133769', '2021-11-13', '9.00' );
我尝试使用窗口函数和 CTE,但找不到包含我所有要求的方法
【问题讨论】:
标签: sql sql-server tsql date-range