Pytanie : The liczba pracujący dzień podczas precyzować miesiąc

I próbować the następujący funkcja the liczba pracujący dzień w miesiąc, ale I mieć kłopot z składnia błąd.  Jakaś propozycja:

CREATE FUNKCJA udf_integer_Returns_WorkingDaysInSpecifiedMonth (@MONTH INT, @YEAR INT)
RETURNS INT
AS
BEGIN
DECLARE @FIRSTDAY DATETIME
DECLARE @LASTDAY DATETIME
DECLARE @MONTHDAYS INT
DECLARE @RESULT INT
SELECT @MONTHDAYS = SKRZYNKA
GDY @MONTH = (1) WTEDY 31
GDY @MONTH = 2 WTEDY 28
GDY @MONTH = 3 WTEDY 31
GDY @MONTH = 4 WTEDY 30
GDY @MONTH = 5 WTEDY 31
GDY @MONTH = 6 WTEDY 30
GDY @MONTH = 7 WTEDY 31
GDY @MONTH = 8 WTEDY 31
GDY @MONTH = 9 WTEDY 30
GDY @MONTH = 10 WTEDY 31
GDY @MONTH = 11 WTEDY 30
GDY @MONTH = 12 WTEDY 31
END

SET @FIRSTDAY = KONWERTYTA (DATETIME, (KONWERTYTA (VARCHAR (2), @MONTH) + "/1/" + KONWERTYTA (VARCHAR (4), @YEAR))
SET @LASTDAY = DATEADD (dd, @MONTHDAYS, @FIRSTDAY)
SET @RESULT = 0
IF @FIRSTDAY <= @LASTDAY
BEGIN
WHILE @FIRSTDAY <> @LASTDAY
BEGIN
SET @RESULT = @RESULT + SKRZYNKA GDY DATEPART (DZIEŃ POWSZEDNI, @FIRSTDAY) W (1,7) WTEDY (0) INNY (1) END
SET @FIRSTDAY = DATEADD (D, (1), @FIRSTDAY)
END
END
RETURN @RESULT
END

Odpowiedź : The liczba pracujący dzień podczas precyzować miesiąc

Zmartwiony, mała zmiana.
(1):
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
-- OPADOWY FUNKCJA GetWorkdays 
TWORZYĆ FUNKCJA GetWorkdays (
  @month int,
  @year int 
  ) POWRÓT INT ZACZYNAĆ
  
	oznajmiać @result int  
	oznajmiać @seedDate datetime
	USTAWIAĆ @SEEDDATE = DATEADD (ROK, @YEAR - 1900, (0))

	WYBIERAĆ @RESULT = SUMA (
	  SKRZYNKA 
		 GDY DATEPART (dzień powszedni,   DATEADD (D, liczba, @seedDate)) W (1,7) 
		 WTEDY (0) 
		 INNY (1) 
		 KOŃCÓWKA
	  )
	  od mistrz. .spt_values
	  dokąd typ = "p"
	  i ROK (DATEADD (D, liczba, @seedDate)) = ROK (@seedDate)
	  i MIESIĄC (DATEADD (D, liczba, @seedDate)) = @month
	powrotny @result
KOŃCÓWKA
Inne rozwiązania  
 
programming4us programming4us