>CREATE CURSOR junk(id n(2),date t,batch n(4),nSeconds n(6)) >INSERT INTO junk values(1,{^2019-02-08 01:25:28 AM},1, 0) >INSERT INTO junk values(2,{^2019-02-08 01:25:29 AM},1, 0) >INSERT INTO junk values(3,{^2019-02-08 01:25:55 AM},1, 0) >INSERT INTO junk values(4,{^2019-02-09 02:28:29 AM},2, 0) >INSERT INTO junk values(5,{^2019-02-09 02:50:18 AM},2, 0) >INSERT INTO junk values(6,{^2019-02-09 08:59:17 PM},2, 0) >INSERT INTO junk values(7,{^2019-02-09 10:25:39 PM},2, 0) >INSERT INTO junk values(8,{^2019-02-12 03:05:19 AM},5, 0) >>
with tmp ([date], dGroup, rcNo) as ( select [date], cast([date] as date), row_number() over (partition by cast([date] as date) order by [date]) from sample ), secs ([date], [seconds]) as ( select t1.[date], datediff(second,t2.[date], t1.[date]) from tmp t1 left join tmp t2 on t1.dGroup = t2.dGroup and t1.rcNo = t2.rcNo+1 ) update sample set nSeconds = coalesce(secs.[seconds],0) from secs where secs.[date] = sample.[date];Demo here: