EXEC ('select '+@totalAvg+'=SUM('+@totalColumn+')/NULLIF(COUNT(1),0) from Score')怎么把计算出来的值赋给 @totalAvg 呀?

解决方案 »

  1.   

    动态sql 语句是无法给变量赋值的
      

  2.   


    EXEC ('select SUM('+@totalColumn+')/NULLIF(COUNT(1),0) as totalsum into # from Score')
    select @totalAvg = totalsum from #
      

  3.   

    sql server的动态语句用法 
    http://blog.csdn.net/xys_777/archive/2010/06/24/5690909.aspx
      

  4.   

    declare @sql nvarchar(4000),@totalAvg int 
    set @sql=N'select @totalAvg=SUM('+@totalColumn+')/NULLIF(COUNT(1),0) from Score'exec sp_executesql 
    @sql,'@totalAvg int output,@totalColumn varchar(50)',
    @totalAvg output,列名的值
      

  5.   

    EXEC ('select SUM('+@totalColumn+')/NULLIF(COUNT(1),0) as totalsum into ## from Score')
    select @totalAvg = totalsum from ##
      

  6.   

    declare @sql nvarchar(1000)
    declare @totalAvg int
    declare @totalColumn int
    --类型和赋值 自己写
    set @sql='select '+@totalAvg+'=SUM('+@totalColumn+')/NULLIF(COUNT(1),0) from Score'
    exec sp_executesql @sql,N'@totalAvg int output',@totalAvg output
    select @totalAvg
      

  7.   

    DECLARE @totalAvg INT
    EXEC SP_EXECUTESQL N'select @totalAvg=1'
    ,N'@totalAvg INT OUTPUT',@totalAvg=@totalAvg OUTPUT
    SELECT @totalAvg
    --1
      

  8.   

    declare @avg_data table (id int identity(1,1) ,totalsum float)EXEC ('select SUM('+@totalColumn+')/NULLIF(COUNT(1),0) as totalsum into @avg_data from Score')
    select @totalAvg = totalsum from @avg_data是不是该改成这样呀?为什么提示 @avg_data 附近有语法错误!
      

  9.   

    我刚调试了下 @totalAvg还是没有值,怎么办呢?
      

  10.   

    如果LZ用的是SS2005及以上,顶4楼6楼7楼。这是最佳方案。
      

  11.   


    --SS2005及以上的最佳方案
    DECLARE @totalAvg INT
    EXEC sp_executesql N'select @totalAvg=1',N'@totalAvg INT OUTPUT',@totalAvg=@totalAvg OUTPUT
    SELECT @totalAvg--SS2000可以这种方案
    DECLARE @totalAvg INT
    SELECT totalAvg = @totalAvg INTO #totalAvg WHERE 1=0
    EXEC('INSERT INTO #totalAvg select totalAvg=1')
    SELECT @totalAvg = totalAvg FROM #totalAvg
    DROP TABLE #totalAvg
    SELECT @totalAvg
      

  12.   

    能否帮忙解释下 
    DECLARE @totalAvg INT
    EXEC sp_executesql N'select @totalAvg=1',N'@totalAvg INT OUTPUT',@totalAvg=@totalAvg OUTPUT
    SELECT @totalAvg
    这是什么意思?
      

  13.   

    我这样写了
    declare @sql nvarchar(1000)
    set @sql='select '+@totalAvg+'=SUM('+@totalColumn+')/NULLIF(COUNT(1),0) from Score'
    EXEC SP_EXECUTESQL @sql,N'@totalAvg float OUTPUT',@totalAvg=@totalAvg OUTPUT
    SELECT @totalAvg为什么提示从数据类型 varchar 转换为 float 时出错。
      

  14.   


    set @sql='select @totalAvg=SUM('+@totalColumn+')/NULLIF(COUNT(1),0) from Score'