declare @mid varchar(100),  @start datetime,@middle datetime, @end datetimeDECLARE wap_outer CURSOR  FOR  SELECT DISTINCT mid  FROM test_vmember
   
OPEN wap_outer   FETCH NEXT FROM wap_outer INTO @mid
FETCH NEXT FROM wap_outer INTO @mid ;
WHILE(@@FETCH_STATUS = 0)        
BEGIN                      
 
declare @test datetime  set @test='2009-02-01 00:00:00.000'   
      
DECLARE wap_inner CURSOR  FOR  select acctime from test_vmember  where mid =@mid         
OPEN wap_inner                                                                
         
FETCH NEXT FROM wap_inner INTO @start;   IF @@FETCH_STATUS <> 0 
      PRINT '获取下一条失败'  
       
WHILE @@FETCH_STATUS = 0              
     begin                                                                                                  
                   
         if(datediff(s,@test,@start)>=60)
        begin
            --insert into tmp(mid,tim) values(@mid,convert(varchar(80 ),@start,120))
            insert into test select * from  test_vmember where mid=@mid and acctime=convert(varchar(80),@start,121)
            --print convert(varchar(80 ),@test,121)+'___'+convert(varchar(80 ),@start,121) 
        end
    set  @test=@middle
    if(datediff(s,@start,@middle)>=60)
        begin
            --insert into tmp(mid,tim) values(@mid,convert(varchar(80 ),@middle,120))
            insert into test select * from  test_vmember where mid=@mid and acctime=convert(varchar(80),@middle,121)
            set @start =@middle
        end
         FETCH NEXT FROM wap_inner INTO @middle;    
    END            
CLOSE wap_inner          
DEALLOCATE wap_inner          
           
FETCH NEXT FROM wap_outer INTO @mid ;     
END            
--关闭游标;   
 CLOSE wap_outer   
DEALLOCATE wap_outer

解决方案 »

  1.   

    一个循环比较和插入两次,当然重复了(下面未测试)
    declare @mid varchar(100),  @start datetime,@middle datetimeDECLARE wap_outer CURSOR  FOR  SELECT DISTINCT mid  FROM test_vmember
       
    OPEN wap_outer   FETCH NEXT FROM wap_outer INTO @midWHILE(@@FETCH_STATUS = 0)        
    BEGIN                      
     
    set @start='2009-02-01 00:00:00.000'   
          
    DECLARE wap_inner CURSOR  FOR  select acctime from test_vmember  where mid =@mid         
    OPEN wap_inner                                                                
             IF @@FETCH_STATUS <> 0 
          PRINT '获取下一条失败'  
           
    WHILE @@FETCH_STATUS = 0              
         begin                                                                                                  
                       
        FETCH NEXT FROM wap_inner INTO @middle;     if(datediff(s,@start,@middle)>=60)
            begin
                --insert into tmp(mid,tim) values(@mid,convert(varchar(80 ),@middle,120))
                insert into test select * from  test_vmember where mid=@mid and acctime=convert(varchar(80),@middle,121)
                set @start =@middle
            end
                 
        END            
    CLOSE wap_inner          
    DEALLOCATE wap_inner          
               
    FETCH NEXT FROM wap_outer INTO @mid ;     
    END            
    --关闭游标;   
     CLOSE wap_outer   
    DEALLOCATE wap_outer