用游标
Declare @ii int
Declare @BB nvarchar(200)
Declare @B1 nvarchar(200)
Declare @B2 nvarchar(200)
Declare @B3 nvarchar(200)
Declare Row_cur Cursor FOR Select top 3 roid FROM 表
OPEN Row_cur fetch next from Row_cur into @BBset @ii = 1 
FETCH NEXT from Row_cur    
WHILE @@FETCH_STATUS = 0    
BEGIN
  IF (@ii = 1) 
  begin
     set @B1 = @BB  
  end
  else if (@ii = 2)
  begin
     set @B2 = @BB  
  end
  else if (@ii = 3)
  begin
     set @B3 = @BB  
  end
  set @ii = @ii + 1 
  FETCH NEXT from Row_cur    
END
close Row_cur    
deallocate Row_cur    

解决方案 »

  1.   

    Declare @ii int
    Declare @BB nvarchar(200)
    Declare @B1 nvarchar(200)
    Declare @B2 nvarchar(200)
    Declare @B3 nvarchar(200)
    Declare Row_cur Cursor FOR Select top 3 roid FROM 表
    OPEN Row_cur fetch next from Row_cur into @BBset @ii = 1 
    FETCH NEXT from Row_cur    
    WHILE @@FETCH_STATUS = 0    
    BEGIN
      IF (@ii = 1) 
      begin
         set @B1 = @BB  
      end
      else if (@ii = 2)
      begin
         set @B2 = @BB  
      end
      else if (@ii = 3)
      begin
         set @B3 = @BB  
      end
      set @ii = @ii + 1 
      FETCH NEXT from Row_cur   into @BB
    END
    close Row_cur    
    deallocate Row_cur 
      

  2.   

    您好,执行后不对,数据输出不大一样
    declare @ii int
    declare @bb varchar(200),@b1 varchar(200),@b2 varchar(200),@b3 varchar(200),@b4 varchar(200)
    declare Row_cur cursor for select top 4 (cast(lsh as varchar(10)) + xm + cast(xd as varchar(10)))as xs from xd  order by lsh desc
    open Row_curfetch next from Row_cur into @bb
    set @ii = 1
    fetch next from Row_cur 
    while @@FETCH_STATUS = 0 
    begin
      if (@ii=1) 
      begin
       set @b1=@bb
       end
       else if (@ii =2)
       begin
        set @b2 = @bb
       end
       else if (@ii=3)
       begin
        set @b3 = @bb
       end
       else if (@ii = 4)
       begin
       set @b4=@bb
       end
        set @ii=@ii+1
       fetch next from Row_cur into @bb
     end
     
       close Row_cur
       deallocate Row_cur
    select @b1,@b2,@b3,@b4
    这个是我修改的,执行后的结果如下图
      

  3.   

    Declare @ii int
    Declare @BB nvarchar(200)
    Declare @B1 nvarchar(200)
    Declare @B2 nvarchar(200)
    Declare @B3 nvarchar(200)
    Declare Row_cur Cursor FOR Select top 3 song FROM song
    OPEN Row_cur 
     
    fetch next from Row_cur into @BB
     
    set @ii = 1  
    WHILE @@FETCH_STATUS = 0    
    BEGIN
      IF (@ii = 1) 
      begin
         set @B1 = @BB  
      end
      else if (@ii = 2)
      begin
         set @B2 = @BB  
      end
      else if (@ii = 3)
      begin
         set @B3 = @BB  
      end
      set @ii = @ii + 1 
      FETCH NEXT from Row_cur   into @BB
    END
    close Row_cur    
    deallocate Row_cur