2016-11-11 51 views
-5

指望我有一个主表像需要查询 - 行带环

======================================== 
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'rd行, 为了计算第一2行之间的差别,如果差然后> = 1小时更新辅助表作为现有值1,这里答案是2

然后是3日和4日。 一旦所有的行都计算出来,然后退出循环。

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

+9

这不是代码写入服务。你应该编辑你的问题,以显示你已经尝试了什么,以及你被困在什么地方。 –

+0

另外,您使用的是哪个版本的sql server? –

+0

sql server 2014 – SQLadmin

回答

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 [email protected]+1)) 
     from @timediff where [email protected] 
     if(@datetimeDiff>=1) 
     BEGIN 
     Select @datetimeDiff 
     --You can write your update code here 

     END 


     Set @[email protected]+2 
     END