如何在临时表中对列i求和

时间:2013-05-24 03:38:15

标签: sql sql-server-2008 dynamic-sql temp-tables

SELECT @cinema_count = COUNT(c.[key]) FROM cinemas c

SET @count = 0
WHILE @count < @cinema_count
BEGIN
    SET @count = @count+1
    SET @buffer = 'ALTER TABLE #temptable ADD cinema'+LTRIM(RTRIM(CAST(@count AS VARCHAR)))+' MONEY DEFAULT 0 WITH VALUES'
    EXEC(@buffer)
END

这是我改变我的#temptable的代码,我的#temptable现在看起来像这样:

date|cinema1|cinema2|cinema3...to cinema10

我想总结一下我的专栏的价值,问题是我不知道如何从我的#temptable中选择电影

这是我选择电影之和的代码

select @sum = sum('cinema' + CAST(@count as varchar)) from #temptable
  

操作数数据类型varchar对sum运算符--error无效。

hellp me pls..thanks

1 个答案:

答案 0 :(得分:0)

正如您从错误消息中看到的那样,字符串'cinema'不被视为字段名称,而是视为文字字符串。因此,您需要使用字符串变量将变量名称与SUM查询连接起来。应该是这样的:

DECLARE @SUM VARCHAR(5000)
SET @SUM = 'SELECT SUM(cinema'+CAST(@count AS VARCHAR(50))+') from #temptable'
EXEC (@SUM)

使用PRINT代替EXEC测试动态sql,以确保生成的查询正确无误。

编辑:添加了缺少的括号。