需要查询 - 循环计数

时间:2016-11-11 06:17:42

标签: sql sql-server tsql date

我有一个像

这样的主表
========================================
ID    NAME    logtime (date time colum) 
========================================
1     cat     dd/mm/yyyy 10.30

2     cat   dd/mm/yyyy 9.20

3     cat    dd/mm/yyyy 9.30

4     cat   dd/mm/yyyy 7.20

二级表如

---------------------
Name     improvement
---------------------
cat       1

现在我想创建一个循环

要计算前两行之间的差异,如果差异大于= 1小时,则将辅助表格更新为现有值+1 (即2),否则将其重置。

现在计算第2行和第3行, 要计算前两行之间的差异,如果差异大于= 1小时,则将辅助表格更新为现有值+1 ,此处答案为2。

然后是第3和第4。 计算完所有行后,退出循环。

任何人都可以给我一个查询吗?

1 个答案:

答案 0 :(得分:0)

    declare @timediff table(id int identity(1,1),Name varchar(50),logtime datetime)
    insert into @timediff Select Name,logtime from timediff

   declare @datetimeDiff int
   declare @i int=1
   while(@i<=(Select count(*) from @timediff))
     Begin
         Select @datetimeDiff=datediff(hour,logtime,
         (Select logtime from  @timediff where id=@i+1)) 
         from @timediff  where id=@i
         if(@datetimeDiff>=1)
         BEGIN
         Select @datetimeDiff
         --You can write your update code here

        END


        Set @i=@i+2
      END