Tôi có một đầu vào trong định dạng sau: Sum hàng trên cơ sở hàng hiện tại và tiếp theo
tôi phải tìm ra sự khác biệt của điểm dừng chân của hàng hiện tại và sự bắt đầu của hàng tiếp theo, và nếu sự khác biệt là nhỏ hơn 25, tôi cần tổng hợp các giá trị trong [TimeDiff_Start_Stop]. Nếu chênh lệch lớn hơn 25 thì tôi không cần phải làm tổng.
Như trong hình trên, sự khác biệt
giữa Dừng của Row 1 và bắt đầu của Row 2 là 13, giữa Dừng của Row 2 và bắt đầu của Row 3 là 2, giữa Dừng của Row 3 và bắt đầu của hàng 4 là 1, giữa Ngừng của hàng 4 và bắt đầu của hàng 5 là 3, giữa Ngừng của hàng 5 và bắt đầu của hàng 6 là 8,
nhưng sự khác biệt giữa Dừng của hàng 6 và bắt đầu của hàng 7 là 37, do đó chỉ [TimeDiff_Start_Stop] trong 6 hàng đầu tiên được tóm tắt, tạo ra hàng 1 ở đầu ra.
Di chuyển chênh lệch hơn nữa giữa Dừng của hàng 7 và bắt đầu của hàng 8 là 20, do đó [TimeDiff_Start_Stop] của hàng 7 và hàng 8 được tổng hợp, tạo ra hàng 2 ở đầu ra. sản lượng
buộc
Làm thế nào tôi nên đạt được điều này?
Hãy tìm thấy bên dưới kịch bản cho đầu vào và đầu ra:
Input:
select 'Sample' as COL1,'1' AS COL2,1 as 'RN','2016-05-09 02:45:18.239669' AS Start,'2016-05-09 02:45:25.837316' as Stop,7 as TimeDiff_Start_Stop
union
select 'Sample' as COL1,'1' AS COL2,2 as 'RN','2016-05-09 02:45:38.809919' AS Start,'2016-05-09 02:46:59.856081' as Stop,81 as TimeDiff_Start_Stop
union
select 'Sample' as COL1,'1' AS COL2,3 as 'RN','2016-05-09 02:47:01.831128' AS Start,'2016-05-09 02:48:55.211807' as Stop,114 as TimeDiff_Start_Stop
union
select 'Sample' as COL1,'1' AS COL2,4 as 'RN','2016-05-09 02:48:56.305736' AS Start,'2016-05-09 02:50:06.107262' as Stop,70 as TimeDiff_Start_Stop
union
select 'Sample' as COL1,'1' AS COL2,5 as 'RN','2016-05-09 02:50:09.269354' AS Start,'2016-05-09 02:50:16.081159' as Stop,7 as TimeDiff_Start_Stop
union
select 'Sample' as COL1,'1' AS COL2,6 as 'RN','2016-05-09 02:50:24.819440' AS Start,'2016-05-09 02:51:04.736300' as Stop,40 as TimeDiff_Start_Stop
union
select 'Sample' as COL1,'1' AS COL2,7 as 'RN','2016-05-09 02:51:41.029165' AS Start,'2016-05-09 02:54:04.186215' as Stop,143 as TimeDiff_Start_Stop
union
select 'Sample' as COL1,'1' AS COL2,8 as 'RN','2016-05-09 02:54:24.537167' AS Start,'2016-05-09 02:55:26.926029' as Stop,62 as TimeDiff_Start_Stop
Output:
select 'Sample' as COL1,'1' AS COL2,'2016-05-09 02:45:18.239669' AS Start,'2016-05-09 02:51:04.736300' as Stop,319 as Time
union
select 'Sample' as COL1,'1' AS COL2,'2016-05-09 02:51:41.029165' AS Start,'2016-05-09 02:55:26.926029' as Stop,205 as Time
Luôn giúp thêm DDL và chèn cho dữ liệu mẫu thay vì ảnh chụp màn hình. –
Cảm ơn @MaxSzczurek. Đã cập nhật tập lệnh. – Logical
LAG và LEAD hữu ích tại đây – Mihai