首先我用的是.NET和SQL2000我要建立一个表,其中某几列需要用今日起10天的日期做列名(格式随意,方便就好)入门时间不长,请问该如何制作~~~~谢谢各位了~我希望能在软件安装完成后,第一次操作数据库之前就建立起这样的一个表格。

解决方案 »

  1.   

    --我最后的动态SQL中删除了表tb,你自己考虑是否保留declare @sql as varchar(1000)
    declare @i as int
    set @i = 0
    set @sql = 'create table tb ('
    while @i <= 10
    begin
      set @sql = @sql +
      '[' + convert(varchar(10),dateadd(day , @i , getdate()),120) + '] int ,'
      set @i = @i + 1
    end
    set @sql = left(@sql , len(@sql) - 1) + ') select * from tb drop table tb'
    exec(@sql)/*
    2009-03-05  2009-03-06  2009-03-07  2009-03-08  2009-03-09  2009-03-10  2009-03-11  2009-03-12  2009-03-13  2009-03-14  2009-03-15  
    ----------- ----------- ----------- ----------- ----------- ----------- ----------- ----------- ----------- ----------- ----------- (所影响的行数为 0 行)
    */
      

  2.   

    我想知道,如何能将这段代码表示的意思写进.NET代码里面或者保留到SQL里面
    使得我在每一次安装完软件之后都能让软件自己生成这样的一个表格貌似很麻烦,还是谢谢大家了~我QQ380882895非常希望3楼能加我,让我骚扰骚扰你~~~谢谢~
      

  3.   

    net不会.把那段代码写成存储过程,用NET去调用.
      

  4.   

    -->建测试表
      create table T1(id int identity,[2009-03-06] varchar(10))
    -->创建存储过程  
    alter proc sp_test
    @tb varchar(200)
    as 
    declare @dt table(a varchar(10))
    insert @dt 
      select convert(varchar(10),dateadd(day,fid-1,getdate()),120)
      from (select fid=1 union select 2 union select 3 union select 4  union select 5
           union select 6 union select 7 union select 8 union select 9  union select 10) tif not exists(select 1 from syscolumns where id=object_id(@tb)
              and name in (select a from @dt))
    begin
      declare @s nvarchar(4000)
      set @s=''
      select @s=@s +'alter table '+ @tb +' add '+ quotename(a) + ' varchar(10);'
      from @dt
      exec(@s)
    end   
    go
    -->调用过程
    exec sp_test 't1'-->查看结果
    select * from t1