Here is a simple way to do this-- Prepare sample dataDECLARE @Sample TABLE ( RowNo TINYINT IDENTITY(1, 1) PRIMARY KEY CLUSTERED, ID TINYINT, [Name] VARCHAR(4), [Time] INT, Points SMALLINT, Grp INT )-- Populate sample dataINSERT @Sample ( ID, [Name], [Time], Points )SELECT 3, 'mark', 28915, 15 UNION ALLSELECT 3, 'mark', 26390, 56 UNION ALLSELECT 3, 'mark', 25225, 89 UNION ALLSELECT 3, 'mark', 6762, 115 UNION ALLSELECT 3, 'mark', 34761, 25 UNION ALLSELECT 10, 'bill', 34872, 56 UNION ALLSELECT 10, 'bill', 45637, 156 UNION ALLSELECT 10, 'bill', 23476, 256-- Initialize control variablesDECLARE @Time INT, @ID TINYINT, @Grp INT-- Set initial control valuesSELECT @Time = 0, @ID = ID, @Grp = 1FROM @SampleWHERE RowNo = 1-- Do the magicUPDATE @SampleSET @Time = @Time + [Time], @Grp = Grp = CASE WHEN @Time >= 86400 OR @ID <> ID THEN @Grp + 1 ELSE @Grp END, @Time = CASE WHEN @Time >= 86400 OR @ID <> ID THEN [Time] ELSE @Time END, @ID = ID-- Show the expected resultSELECT ID, [Name], SUM([Time]) AS [Time], SUM(Points) AS PointsFROM @SampleGROUP BY ID, [Name], GrpORDER BY Grp
Output from above query isID Name Time Points-- ---- ----- ------3 mark 80530 1603 mark 41523 14010 bill 80509 21210 bill 23476 256
E 12°55'05.25"N 56°04'39.16"