--查询的存储过程就可以写成类似这样的
create proc p_qry
@date_begin datetime,
@date_end datetime
as
declare @s nvarchar(4000),@i int
select @s='',@i=0
while datediff(year,@date_begin,@date_end)>=@i
select @s=@s+' union all select * from tb_'+datename(year,dateadd(year,@i,@date_begin))
,@i=@i+1
set @s='select * from('
+stuff(@s,1,11,'')
+')a where 时间 between @date_begin and @date_end'
exec sp_executesql @s
,N'@date_begin datetime,@date_end datetime'
,@date_begin,@date_end
go