在SQL里面有一个循环取数据的,想把循环的Union all 成一个数据集,有什么办法没有?
例declare @t table(oid int identity ,d int,m varchar(20),startdate datetime , enddate datetime) 
declare @oid int
set @oid = 1 
while  @oid <= 12 
begin
select * from a where a.datetime>= (select startdate  from @t where oid=@oid) 
end

解决方案 »

  1.   

    NND,自己解决,申明了一张表变量,把所有循环查出的结果,都插入到表变量里面,
    然后在从表变量里面选。
      

  2.   

    --try
    declare @t table(oid int identity ,d int,m varchar(20),startdate datetime , enddate datetime) 
    select * from a where a.datetime>= (select min(startdate)  from @t where oid between 1 and 12)
      

  3.   

    非要union all 的话可以拼串,然后再执行
    declare @t table(oid int identity ,d int,m varchar(20),startdate datetime , enddate datetime) 
    declare @oid int
    set @oid = 1 
    declare @sql varchar(1000)
    set @sql=''
    while  @oid <= 12 begin
    set @sql=@sql+' ######################+' union all '
    endset @sql=substring(@sql,1,len(@sql)-10)exec (@sql)