create procedure yourP 
@month varchar(2)
asexec ('select sum(score' + @month + ') from data_month group by jgid')
-- 如:
  ---  exec yourP '02'

解决方案 »

  1.   

    也可以:create procedure yourP 
    @month int
    as
    declare @m varchar(2)
    set @m= right(cast((100+@m) as varchar),2)exec ('select sum(score' + @m + ') from data_month group by jgid')
    -- 如:
      ---  exec yourP 2
      

  2.   

    有两种方法:
    1、动态执行法
    在存贮过程中构造SQL语句然后动态执行declare @Sql varchar(500)
    Select @Sql='Select sum(score' +cast(month(getdate()) as varchar(2))+') from data_month group by jgid'Execute(@Sql)
    2、在ASP中直接构造SQL语句再调用RecorderSet的Open方法
    3、在存贮过程中使用较多 的IF   ELSE每个月对应一条SQL语句,如
    if (Month(GetDate())=1)
    Select sum(Score1) from data_month group by jgid
    else if(Month(GetDate())=2)
    .................
      

  3.   

    CREATE PROCEDURE dbo.GetSum  
        @intSum int OUTPUT         /*返回值int类型改为你的类型*/
    as
    BEGIN
    declare @strSql nvarchar(100)

    select @strsql = 'select @iSum = sum('

    select @strsql = @strsql + case  
    when month(getdate())<10  
    then 'score0' + convert(nvarchar(1),month(getdate())) 
    else 'score' + convert(nvarchar(1),month(getdate())) end
    select @strsql = @strsql + ') from data_month '

    declare @pp nvarchar(100)
    select @pp = '@iSum int output'
    exec sp_executesql @strsql,@pp,@iSum = @intSum output
    End
      

  4.   

    不好意思,有个错误:
    else 'score' + convert(nvarchar(1),month(getdate())) end
    改为
    else 'score' + convert(nvarchar(2),month(getdate())) end