日期:2014-05-17  浏览次数:20485 次

问一个循环取值的问题.
取值的数量是一个变量,目前遇到的问题时,如果这样执行,会产生多个结果窗口,有没有办法能把这些结果union all在一起?
大概简化的逻辑和下面差不多

set @i=1
while @i<=@xxx
begin
with a as(select...)
select * from a 
set @i=@i+1
end

------最佳解决方案--------------------
declare @TB table(....)
set @i=1
 while @i<=@xxx
 begin
 with a as(select...)
 insert into @TB(...)
 select * from a 
 set @i=@i+1
 end
 select * from @TB
------其他解决方案--------------------

set @i=1
while @i<=@xxx
begin
with a as(select...)
set @i=@i+1
end
select * from a 

没有测试数据不知道你想要什么的结果,上面的写法只能确保你最后一次查出来的数据,而不是多个查询窗口
------其他解决方案--------------------
没看明白,lz给个数据结构和结果看看?

------其他解决方案--------------------
把循环体中的内容放到一个临时表
------其他解决方案--------------------
这样呢?

set @i=1
while @i<=@xxx
begin
with a as(select...)
select * into #temp from a 
set @i=@i+1
end
select * from #temp