无法在Sql While循环中向变量添加值

时间:2012-10-29 08:16:04

标签: tsql

在以下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 

我现在很困惑。那是什么错误?

2 个答案:

答案 0 :(得分:1)

您必须使用默认值(例如0)预启动变量:)

答案 1 :(得分:1)

正如Martin指出的那样,您可以将整个查询编写为简单的SUM

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

虽然我会查询为什么7am8am尚未int s。