2013-09-03 11 views
5

Dlaczego otrzymuję błąd składni na następujących instrukcji SQL:Przypisywanie INT Zmienna Od SELECT w 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' 

Staram się przypisać liczbę wierszy zwracanych z mojego Select do zmiennej @ Count90Day .

Odpowiedz

13

Trzeba nawiasy wokół podzapytanie:

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

Możesz również napisać to bez numeru set jak:

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

Nie przypisanie zmiennych SQL w SELECT takiego, można zrobić:

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

można przypisać go w SELECT, tak:

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' 
1

To powinno działać

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' 
0

można przypisać zmienną w DECLARE rachunku, wystarczy użyć nawiasów okrągłych dookoła życzenie.

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