ALTER PROCEDURE [dbo].[UP_HourStat_GetMonthSum] 
(
  @Years int,            
  @Months int
)
AS
BEGIN
    Declare @MonthStr varchar(2000)
    Declare @hour int
    Declare @sql varchar(2000)select  @MonthStr='sum(Hour0)'
select  @hour=1
    while @hour<24
    begin
select @MonthStr=@MonthStr+'+sum(Hour'+CAST(@hour as varchar)+')'
select @hour=@hour+1
    end
    set @sql='select'+@MonthStr+' as 今月人数 from HourStat where Years='+CONVERT(varchar(20),@Years)+' and Months='+CONVERT(varchar(20),@Months)
    exec(@sql)
END上面的报错:第 1 行: 'Hour0' 附近有语法错误。 
是什么问题?

解决方案 »

  1.   

    ALTER PROCEDURE [dbo].[UP_HourStat_GetMonthSum]  
    (
      @Years int,   
      @Months int
    )
    AS
    BEGIN
      Declare @MonthStr varchar(2000)
      Declare @hour int
      Declare @sql varchar(2000)select @MonthStr='sum(Hour0)'
    select @hour=1
      while @hour<24
      begin
    select @MonthStr=@MonthStr+'+sum(Hour'+CAST(@hour as varchar)+')'
    select @hour=@hour+1
      end
      set @sql='select '+@MonthStr+' as 今月人数 from HourStat where Years='+CONVERT(varchar(20),@Years)+' and Months='+CONVERT(varchar(20),@Months)
      exec(@sql)
    END
    set @sql='select '+@MonthStr+' as 今月人数 from HourStat where'select '这里好像少了个空格
      

  2.   

    很简单,你print(@sql)就可以知道你的错误。
    select 后面需要一个空格。set @sql='select  '+@MonthStr+' as 今月人数 from HourStat where 
      

  3.   

    Declare  @Years int,@Months intset @Years=2005
    set @Months=10Declare @MonthStr varchar(2000)
    Declare @hour int
    Declare @sql nvarchar(2000)set @MonthStr='sum(Hour0)'set @hour=1while @hour<24
    begin
    set @MonthStr=@MonthStr+'+sum(Hour'+CAST(@hour as varchar)+')'
    set @hour=@hour+1
    end
    set @sql='select '+@MonthStr+' as N''今月人数'' from HourStat where Years='''+CONVERT(varchar(20),@Years)+''' and Months='''+CONVERT(varchar(20),@Months)+''''print @sqlselect sum(Hour0)+sum(Hour1)+sum(Hour2)+sum(Hour3)+sum(Hour4)+sum(Hour5)+sum(Hour6)+sum(Hour7)+sum(Hour8)+sum(Hour9)+sum(Hour10)+sum(Hour11)+sum(Hour12)+sum(Hour13)+sum(Hour14)+sum(Hour15)+sum(Hour16)+sum(Hour17)+sum(Hour18)+sum(Hour19)+sum(Hour20)+sum(Hour21)+sum(Hour22)+sum(Hour23) as N'????' from HourStat where Years='2005' and Months='10'
      

  4.   

    set @sql='select '+@MonthStr 补个空格