0
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 は、合計演算子 --error に対して無効です。

助けてください..ありがとう

4

1 に答える 1

0

エラー メッセージからわかるように、文字列 'cinema' はフィールド名ではなく、リテラル文字列と見なされます。そのため、変数名を SUM クエリと連結するには、文字列変数を使用する必要があります。次のようになります。

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

結果のクエリが正しいことを確認するために、EXEC の代わりに PRINT を使用して動的 SQL をテストします。

編集:欠落していた括弧を追加しました。

于 2013-05-24T03:50:27.510 に答える