SQL DATEADD/WHERE语法

SQL DATEADD/WHERE语法,sql,sql-server,tsql,temp-tables,Sql,Sql Server,Tsql,Temp Tables,我的WHERE声明有点问题。我声明了一个名为@StartDate的变量,其数据类型为DATE,因为我不需要时间。我将根据过去30天、60天、90天等等的订单数量,多次更新临时表,但在单独的语句中进行更新 UPDATE #TempTable SET Q30Day = Count(*) FROM #TempTable SET @StartDate = DATEADD(DAY, -30, CAST(GETDATE() as DATE)) WHERE PaidTime

我的WHERE声明有点问题。我声明了一个名为@StartDate的变量,其数据类型为DATE,因为我不需要时间。我将根据过去30天、60天、90天等等的订单数量,多次更新临时表,但在单独的语句中进行更新

    UPDATE #TempTable SET Q30Day = Count(*)  
    FROM #TempTable
    SET @StartDate = DATEADD(DAY, -30, CAST(GETDATE() as DATE))
    WHERE PaidTime >= @StartDate

WHERE语句在抱怨,说“WHERE”附近的语法不正确,但我不确定原因。

您只是把事情弄得一团糟,顺序不对:-

SET @StartDate = DATEADD(DAY, -30, CAST(GETDATE() as DATE))    
UPDATE #TempTable SET Q30Day = Count(*)  
FROM #TempTable
WHERE PaidTime >= @StartDate

查询中是否有2个
SET
子句?也许应该先完成第二部分,然后更新可以是一个有意义的查询。