我正在试图找到一种方法来迭代一些按时间顺序排列的数据,并在此过程中应用某些参数.我有一个包含事件编号的表,这些编号与客户在事件发生后收到的每个后续服务(按日期顺序)相关联.起初,我使用分区代码,并将最早的Sequel Service作 for each 事件的最终续集,但后来我被告知,一个事件的完整结果可以包含多个服务,前提是这些服务的间隔不超过3天.因此,我现在需要一些代码来处理时间顺序,并找到与每个事件相关的每个服务集群.
因此,对于事件1:第一次服务是在活动结束后的第二天提供的,并于2022年1月16日结束.服务2随后在两天后开始,因此也在范围内,服务3在服务2结束后的第二天开始,因此需要包括在内,但在客户收到第四项服务之前有两个月的间隔,因此这将被视为与事件1无关.
"In Scope"列是我想要创建的,允许我将每个事件及其相关的后续服务移动到一个新表中,而不考虑其余的.有没有办法使用循环或其他功能自动执行此过程?在处理完事件1之后,代码需要依次移到事件2、事件3、事件4等上,以找到相关的服务集群.
构建上述表格的代码:
create table #Table
(Event_Number int
,Event_Start date
,Event_End date
,Sequel_Service_Number int
,Sequel_Service_Start_Date date
,Sequel_Service_End_Date date
,In_Scope Int
)
insert into #Table
(Event_Number
,Event_Start
,Event_End
,Sequel_Service_Number
,Sequel_Service_Start_Date
,Sequel_Service_End_Date
,In_Scope
)
values
(1, '2022-01-01', '2022-01-10', 1, '2022-01-11', '2022-01-16', 1)
,(1, '2022-01-01', '2022-01-10', 2, '2022-01-18', '2022-01-25', 1)
,(1, '2022-01-01', '2022-01-10', 3, '2022-01-26', '2022-01-30', 1)
,(1, '2022-01-01', '2022-01-10', 4, '2022-03-31', '2022-04-05', 0)
,(2, '2022-03-20', '2022-03-30', 1, '2022-03-31', '2022-04-05', 1)
,(2, '2022-03-20', '2022-03-30', 2, '2022-04-08', '2022-04-12', 1)
,(2, '2022-03-20', '2022-03-30', 3, '2023-01-01', '2023-01-30', 0)
,(2, '2022-03-20', '2022-03-30', 4, '2023-02-01', '2023-02-06', 0)
,(2, '2022-03-20', '2022-03-30', 5, '2023-04-05', '2023-04-12', 0)
,(2, '2022-03-20', '2022-03-30', 6, '2023-05-09', '2023-05-10', 0)
,(2, '2022-03-20', '2022-03-30', 7, '2023-05-10', '2023-05-15', 0)
;