为什么在以下SQL语句中出现语法错误:

DECLARE @Count90Day int;

SET @Count90Day =  SELECT COUNT(*) FROM Employee WHERE DateAdd(day,30,StartDate) BETWEEN
DATEADD(day,-10,GETDATE()) AND DATEADD(day,10,GETDATE())  AND Active ='Y'

我试图将我的Select语句返回的行数分配给变量@ Count90Day。

最佳答案

您需要在子查询周围加上括号:

DECLARE @Count90Day int;

SET @Count90Day =  (SELECT COUNT(*)
                    FROM Employee
                    WHERE DateAdd(day,30,StartDate) BETWEEN DATEADD(day,-10,GETDATE()) AND
                                                            DATEADD(day,10,GETDATE())  AND
                          Active ='Y'
                   );

您也可以不使用set将其编写为:
DECLARE @Count90Day int;

SELECT @Count90Day =  COUNT(*)
FROM Employee
WHERE DateAdd(day,30,StartDate) BETWEEN DATEADD(day,-10,GETDATE()) AND DATEADD(day,10,GETDATE()) AND
      Active ='Y';

关于sql - 从SQL中的Select语句分配INT变量,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18591523/

10-11 02:51