在以下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
我现在很困惑。那是什么错误?
答案 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
虽然我会查询为什么7am
和8am
尚未int
s。