while(条件)
begin
  select sum(a1), avg(a2) from table1 where...
end-----------
你这样执行,如果是外部程序调用的话,可以返回多个结果集
若你要把所有结果集放在一起当一个结果集输出的话,那必须把每次循环的结果集放到一个临时表或表变量里才行~~等这个循环执行完后,然后select临时表或表变量返回一个结果集

解决方案 »

  1.   

    其实你建立个局部临时表的话,且我看你那样的查询是返回记录不多的,没事~~~
    局部临时表 (#表名),不要用全局临时表,这样的话,若别人也刚好创建了这个临时表,则会报错,因为全局临时表一次只能存在一个 (##表名)其实你用表变量(是把数据存放在内存里)的话,那更好 :declare @test table (total1 int,total2 int)
      

  2.   

    --不用临时表,用表变量可以吗?如果数据量不大的情况下,用表变量速度上比较快.因为它是存储在内存里边的.  declare @t table(col1 int,col2 int)
      while(条件)
        begin
        insert into @t select sum(a1), avg(a2) from table1 where...
        end
      select * from @t
      

  3.   

    临时表,表变量都要指定列和类型?也可以不指定啊,你可以如下用:
    select * into #table1 from bmlbselect * from #table1
    #table1表的列就会自动变的啊。
      

  4.   

    lmj2003(雁不归)
    临时表,表变量都要指定列和类型,也可以不指定吗?
      

  5.   

    while (条件)
    select * into #table1 from bmlb where (每次条件不一样)这样的循环后
    #table1是多条记录吗?是否是循环的次数的记录数, #table可以不定义列和数据类型吗。
      

  6.   

    实质就是可以不可以不预先定义表变量的结构,或是先定义, 但你insert记录时,它会自动改变表结构.