0

次のwhileループでは、テーブルから選択した値を追加したときのように変数@totalが生成されます。NULL追加しない場合、結果はテーブルから選択された値として表示されますが、最後の行の値のみが表示されます。

SET @coundDate = '1/1/2012';

WHILE ( Datepart(dd, @countDate) < Datepart(dd, @endDate) )
  BEGIN
      SET @total = @total + (SELECT Cast([7am] AS INT) + 
                                    Cast([8am]AS INT) AS TotalHitCount
                             FROM   Sale
                             WHERE  TransactionDate = @countDate);
      SET @countDate = Dateadd(d, 1, @countDate);
  END;

SELECT @total 

私は今、多くのことを混乱させています。そのエラーは何ですか?

4

2 に答える 2

1

0のようなデフォルト値で変数を事前に初期化する必要があります:)

于 2012-10-29T08:18:51.773 に答える
1

Martinが指摘しているように、クエリ全体を単純なものとして記述できますSUM

SELECT SUM(Cast([7am] AS INT) + Cast([8am]AS INT)) AS Total
FROM   Sale
WHERE  TransactionDate between '20120101' and @endDate

私は理由7amを尋ねますが、8amまだintsではありません。

于 2012-10-29T08:30:03.040 に答える