数据库表是根据日期生成的字段相同,如何用存储过程把表所有按照时间联合查询出来
数据库里面是按照时间生成数据表如何用存储过程把它们一起查询出来(合并成一张表)会吗帮个忙例如:abc070201第一张表就时2007年02月1日生成的abc070202第...
数据库里面是按照时间生成数据表 如何用存储过程把它们一起查询出来(合并成一张表)会吗帮个忙 例如:abc070201第一张表就时2007年02月1日生成的 abc070202第二张表就时2007年02月2日生成的 abc070202第三张表就时2007年02月3日生成的 一天生成一张按照时间范围查出来(字段里面有开始时间,结束时间)
展开
展开全部
你的情况不建议使用存储过程,建议使用自定义函数,你可以在自定义函数上随意操作
create function FData @begin datetime,@end datetime
returns @table table(表结构)
as
declare @sql varchar(8000)
begin
select @sql=''
while(@begin<=@end)
begin
if(select Count(*) from sysobjects where name='abc'+right(Convert(varchar(10),@bigen,112),6))>0
set @sql= 'select * from abc'+right(Convert(varchar(10),@bigen,112),6)+' where 开始时间>'''+
convert(varchar(22),@begin,120)+''' and 结束时间<''闷芹纤'+convert(varchar(22),@end,120)+''' union all '
end
if(len(@sql)>0)
begin
@sql=left(@sql,len(@sql)-10);
insert into @table exec (@sql)
end
else
raiserror('对不起,您查询的时首皮间段没有任何数据!',16,1)
return (@table)
end
查询出的FData是一张满足时间段的表@begin参数是开始时间@end 参数是结束时间
执行你的对该表的任意操作:
如:
select * from
dbo.FData(Cast('2011-1-1' as datatime),cast('2011-12-1' as datatime)) as a
left join 其他表 as b on a.编号=b.编号
--手写代码,可能蚂仿报错
create function FData @begin datetime,@end datetime
returns @table table(表结构)
as
declare @sql varchar(8000)
begin
select @sql=''
while(@begin<=@end)
begin
if(select Count(*) from sysobjects where name='abc'+right(Convert(varchar(10),@bigen,112),6))>0
set @sql= 'select * from abc'+right(Convert(varchar(10),@bigen,112),6)+' where 开始时间>'''+
convert(varchar(22),@begin,120)+''' and 结束时间<''闷芹纤'+convert(varchar(22),@end,120)+''' union all '
end
if(len(@sql)>0)
begin
@sql=left(@sql,len(@sql)-10);
insert into @table exec (@sql)
end
else
raiserror('对不起,您查询的时首皮间段没有任何数据!',16,1)
return (@table)
end
查询出的FData是一张满足时间段的表@begin参数是开始时间@end 参数是结束时间
执行你的对该表的任意操作:
如:
select * from
dbo.FData(Cast('2011-1-1' as datatime),cast('2011-12-1' as datatime)) as a
left join 其他表 as b on a.编号=b.编号
--手写代码,可能蚂仿报错
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询