Aunque no me gusta trabajar con ciclos, ya que la funcion la aplicas n veces segun el numero de dias que halla en el rango, incluso creo que se puede evitar el insert..
Código:
alter FUNCTION CuantosDiasSemana(@FechaInicio datetime,@FechaFin datetime,@DiaSemana tinyint = 1)
returns int
AS
begin
IF @FechaInicio > @FechaFin
RETURN 0
DECLARE @icuenta int
SET @icuenta = 0
while @FechaInicio <= @FechaFin
BEGIN
IF DATEPART(WEEKDAY, @FechaInicio) = @DiaSemana
SET @icuenta = @icuenta + 1
SET @FechaInicio = @FechaInicio + 1
END
RETURN @icuenta
END
Como comentario, fijate que en el server tengo una tabla con las fechas por dia y rangos de semana, meses...mismas que me son de mucha utilidad cuando requiero por ejemplo hacer cortes, o contar cosas como estas...
no tengo que andar insertando porque ya esta ahi la info..
Saludos!