create proc p_create
@tbname sysname, --要创建的表名
@dt1 datetime,   --开始时间
@dt2 datetime    --结束时间
as
declare @s nvarchar(4000)
set @s='create '+quotename(@tbname)+'(
列1 int,
列2 int'
while datediff(month,@dt1,@dt2)>=0
select @s=@s+N',
'+quotename(convert(char(6),@dt1,112))
,@dt1=dateadd(month,1,@dt1)
exec(@s+N')')

解决方案 »

  1.   

    做个循环
    月数累加
    substring(convert(char,dateadd(m,1,@par1),112),1,6)create table ...
      

  2.   

    create proc p_test
    @par1 varchar(6),
    @par2 varchar(6)
    as
    declare @begin datetime, @end datetime
    declare @sql varchar(8000)
    select @begin = cast( @par1 + '01' as datetime ), @end = cast( @par2 + '01' as datetime )set @sql = 'create table #tmp( 列1 类型, 列2 类型'
    while( @begin <= @end ) begin
      select @sql = ', [' + convert( varchar(6), @begin, 112 ) + '] 类型'
      set @begin = dateadd( m, 1, @begin )
    end
    set @sql = @sql + ' )'--print @sql
    exec( @sql )