0

I have a problem with variable definition in MS SQL SERVER. Could you give me any hint, how can I assign the result of count function to variable @WorkingDays ?

DECLARE @StartDate DATE = '2017-03-29';
DECLARE @EndDate DATE = '2017-05-05';
DECLARE @WorkingDays INT;

    WITH DateRange(DateData) AS 
    (
        SELECT @StartDate as Date
        UNION ALL
        SELECT DATEADD(d,1,DateData)
        FROM DateRange 
        WHERE DateData < @EndDate
    )
    SELECT COUNT(DateData)
    FROM DateRange
    WHERE DATEPART(dw, DateData) not in (1, 7)
    OPTION (MAXRECURSION 0)

I`ve tried to use

set @WorkingDays = (WITH.... OPTION (MAXRECURSION 0) ) 

but it returns an error (incorrect syntax)

I will be grateful for any hint

Best regards

Bridge
  • 29,818
  • 9
  • 60
  • 82
fafnir1990
  • 185
  • 2
  • 16
  • `set @x = (select y from t)` or `select @x = y from t`. Read http://stackoverflow.com/questions/3945361/set-versus-select-when-assigning-variables – Nikhil Vartak Apr 11 '17 at 10:14

2 Answers2

4

SELECT @WorkingDays = COUNT(DateData) ...

Arvo
  • 10,349
  • 1
  • 31
  • 34
1

you can follow this method:

set @workingDays = (SELECT COUNT(DateData) FROM DateRange
                   WHERE DATEPART(dw, DateData) not in (1, 7)
                   OPTION (MAXRECURSION 0))
Mr.Bhanushali
  • 126
  • 12