数据库结构是这样的,有很多个站点,使用编年表的形式存储数据。
每个站点每一年会有一张表。表字段有,站点名,值,时间。表名结构是:站点名_年份。每一个小时有一条数据产生。
我想查询每一个站点某一个月的平均值。需要从小时数据计算到日均数据,再从日均数据计算出月均数据。
但由于年份是动态的,所以表名也是动态的。如何在循环中,动态设置表名?我使用存储过程能设置带变量的表名,不能用循环。用循环又不能设置带变量的表名。如何解决?
------解决方案--------------------
- SQL code
@Year int --年份, @beginDate datetime--开始时间 ,@endDate datetime--结束时间,@Station decimal(18, 3)--站点的值begin set @endDate=cast(DATEADD(MM,1,@beginDate ) as datetime) --结束时间是开始时间加一个月 while @beginDate<@endDate begin -- select @Station= ( select monthAvg from [email protected] ) exec('insert into 另外一个表 select beginDate=' [email protected]+',monthAvg from 站点名_'+cast(@Year as varchar))--把时间和月均值插入另一个表 set @beginDate = cast(DATEADD(dd,1,@beginDate ) as datetime) --加一天 endendtry