ich eine Eingabe in folgendes Format haben: Zeilensummierung auf Basis der aktuellen und der nächsten Zeile
Ich habe den Unterschied der Stopp der aktuellen Zeile und dem Beginn der nächsten Zeile zu finden, und wenn die Differenz weniger als 25, muss ich die Werte in [TimeDiff_Start_Stop] summieren. Wenn der Unterschied mehr als 25 ist, muss ich die Summe nicht machen.
Wie in der obigen Bild, Differenz
zwischen Stopp der Zeile 1 und dem Beginn der Zeile 2 13 ist, zwischen Stopp der Reihe 2 und dem Beginn der Zeile 3 gleich 2 ist, zwischen Stopp der Reihe 3 und Start von Zeile 4 ist 1, zwischen Stop von Zeile 4 und Start von Zeile 5 ist 3, zwischen Stop von Zeile 5 und Start von Zeile 6 ist 8,
aber der Unterschied zwischen Stop von Zeile 6 und Start von Zeile 7 ist 37, daher wird nur [TimeDiff_Start_Stop] der ersten 6 Zeilen summiert, wodurch die Zeile 1 in der Ausgabe erzeugt wird.
Der weitere Unterschied zwischen Stopp von Zeile 7 und Start von Zeile 8 ist 20, daher [TimeDiff_Start_Stop] von Zeile 7 und Zeile 8 wird summiert, wodurch die Zeile 2 in Ausgabe erzeugt wird.
Erforderliche Ausgabe
Wie soll ich das erreichen?
Hier finden Sie Skripte für die Ein- und Ausgabe:
Eingang:
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
Ausgang:
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
Immer hilft, DDL und Inserts für Beispieldaten anstelle von Screenshots hinzuzufügen. –
Danke @MaxSzczurek. Die Skripte wurden aktualisiert. – Logical
LAG und LEAD sind hier nützlich – Mihai