Ver Mensaje Individual
  #1 (permalink)  
Antiguo 02/02/2011, 09:38
van2000
 
Fecha de Ingreso: octubre-2006
Mensajes: 68
Antigüedad: 18 años, 4 meses
Puntos: 0
ayuda con SQL!!! Heelp!!

Buenos dias, no encontré un foro excluviso para SQL, espero me puedan ayudar ...
La bronca es esta, tengo que sacar de un rango de fechas el numero de dias laborales por mes, es decir, quitando los sábados y domingos, por ejemplo:

del 5 de enero al 17 de marzo

ENERO 19 dias
FEBRERO 28 dias
MARZO 17 dias


-Este query dice: fnGetDates es una función que de un rango de fechas te saca el total de dias nada mas:

ALTER FUNCTION [dbo].[fnGetDates]
(
-- Add the parameters for the function here
@DtFrom DATETIME,
@DtTo DATETIME
)
RETURNS @DateList TABLE (Dt datetime)
AS
BEGIN
DECLARE @TotDays INT
DECLARE @CNT INT

SET @TotDays = DATEDIFF(DD,@DTFROM,@DTTO)-- [NO OF DAYS between two dates]

SET @CNT = 0

WHILE @TotDays >= @CNT -- repeat for all days
BEGIN
INSERT INTO @DateList
SELECT (@DTTO - @CNT) AS DAT
SET @CNT = @CNT + 1


END



-Este otro query saca los dias laborales pero para un rango total, es decir, del 5 de enero al 17 de marzo mandará un total de 80 dias laborales (por decir algo) pero yo necesito que me diga cuantos son por cada mes, me explico?

declare @EndDate datetime
declare @StartDate datetime
set @StartDate = '2011-02-01'
set @EndDate = '2011-02-28'

SELECT
CASE
WHEN
@StartDate != '' AND @EndDate != '' AND @StartDate < @EndDate

THEN
DATEDIFF(d,@StartDate,@EndDate)+1
- (DATEDIFF(wk,@StartDate,@EndDate) + CASE WHEN DATEPART(dw,@StartDate)=1 then 1 else 0 End )
- (DATEDIFF(wk,@StartDate,@EndDate) + CASE WHEN DATEPART(dw,@EndDate)=7 then 1 else 0 End )
ELSE
0
END
AS totaldays1



No encuentro la manera de combinar esos archivos para obtener el resultado que necesitode. O si existe otra manera de hacer lo que necesito por favor alguien que me pueda ayudar...

Muchas gracias, saludos cordiales