6

为什么在以下 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。

4

5 回答 5

20

您需要围绕子查询的括号:

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'
                   );

您也可以在没有setas 的情况下编写它:

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';
于 2013-09-03T11:47:15.813 回答
2

您可以在 中分配它SELECT,如下所示:

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' 
于 2013-09-03T11:47:15.773 回答
1

这应该工作

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' 
于 2013-09-03T11:48:21.687 回答
1

您不会SELECT像那样分配 SQL 变量,您可以这样做:

SELECT @Count90Day = COUNT(*) 
FROM Employee WHERE DateAdd(day,30,StartDate) BETWEEN
DATEADD(day,-10,GETDATE()) AND DATEADD(day,10,GETDATE())  AND Active ='Y' 
于 2013-09-03T11:47:03.770 回答
0

您可以在语句中分配变量DECLARE,只需在请求周围使用圆括号。

DECLARE @Count90Day as int = (SELECT COUNT(*) 
                              FROM Employee 
                              WHERE DateAdd(day,30,StartDate) BETWEEN 
                                    DATEADD(day,-10,GETDATE()) AND
                                    DATEADD(day,10,GETDATE())  
                              AND Active ='Y')
于 2017-06-21T10:34:01.417 回答