【问题标题】:Need Query - Row count with loop需要查询 - 带循环的行数
【发布时间】:2017-03-25 08:14:29
【问题描述】:

我有一个像这样的主表

========================================
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

现在我想创建一个循环

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

现在计算第 2 行和第 3 行, 要计算前 2 行之间的差异,如果差异 >= 1 小时,则将辅助表更新为 现有值 +1,这里的答案是 2。

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

谁能给我一个查询?

【问题讨论】:

  • 这不是代码编写服务。您应该编辑您的问题以显示您尝试过的内容以及遇到的问题。
  • 另外,您使用的是什么版本的 sql server?
  • sql server 2014

标签: sql sql-server tsql date


【解决方案1】:
    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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-12
    相关资源
    最近更新 更多