前提:select getdate() 得到3,对应的表[工资表]查询语句是select mon3 from 工资表如何根据当前获取的时间月份,得到对应的字段名:1->mon1,2->mon2,3->mon3.....12->mon12

解决方案 »

  1.   

    set @sql = 'select ' + @columnname + ' from tb'
      

  2.   

    DECLARE @M VARCHAR(2)
    SET @M=DATENAME(MM,GETDATE())EXEC('SELECT MON'+@M+' FROM TB')
      

  3.   


    我用convert,substring等等,实行固定值mon+对应月份的拼接,不出效果,望赐教。
      

  4.   

    declare @m int
    set @m=month(getdate())exec ('select [mon'+ltrim(@m)+'] from 工资表')
      

  5.   

    declare @i int,@sql varchar(1000),@j int
    select @i=datepart(mm,getdate()),@j=1
    while @j<=@i
      begin
        set @sql=isnull(@sql+',','')+'mon'+ltrim(@j)
       set @j=@j+1
      end
    print 'select '+@sql+' from tb'
    /*
    select mon1,mon2,mon3 from tb*/
    exec( 'select '+@sql+' from tb')
      

  6.   

    DECLARE @M INT,@SQL VARCHAR(50)
    SET @M=DATEPART(MM,GETDATE())SET @SQL='SELECT MON'+LTRIM(@M)+' FROM TB'
    PRINT @SQL
      

  7.   

    exec里不能用函数declare @m int
    set @m=ltrim(month(getdate()))exec ('select [mon'+@m+'] from 工资表')
      

  8.   


    SELECT 'MON'+cast(DATEPART (mm,getdate()) as varchar(2)) FROM TB