Foros del Web » Programación para mayores de 30 ;) » .NET »

ayuda con SQL!!! Heelp!!

Estas en el tema de ayuda con SQL!!! Heelp!! en el foro de .NET en Foros del Web. Buenos dias, no encontré un foro excluviso para SQL, espero me puedan ayudar ... La bronca es esta, tengo que sacar de un rango de ...
  #1 (permalink)  
Antiguo 02/02/2011, 09:38
 
Fecha de Ingreso: octubre-2006
Mensajes: 68
Antigüedad: 17 años, 7 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
  #2 (permalink)  
Antiguo 02/02/2011, 09:46
Avatar de Heimish2000  
Fecha de Ingreso: enero-2011
Ubicación: Madrid
Mensajes: 844
Antigüedad: 13 años, 3 meses
Puntos: 89
Respuesta: ayuda con SQL!!! Heelp!!

Haz un bucle en el primero que vaya llamando al segundo por cada mes que esté en tu rango.
  #3 (permalink)  
Antiguo 02/02/2011, 10:29
 
Fecha de Ingreso: octubre-2006
Mensajes: 68
Antigüedad: 17 años, 7 meses
Puntos: 0
Respuesta: ayuda con SQL!!! Heelp!!

Pero el valor de cada mes ya es un entero, ya no es una fecha, entonces debo llamar la otra función antes para q pueda realizar esa operación,... no me queda claro como crear el bucle, podrias ayudarme, please

mil gracias por tu respuesta
  #4 (permalink)  
Antiguo 02/02/2011, 17:17
 
Fecha de Ingreso: enero-2011
Mensajes: 5
Antigüedad: 13 años, 3 meses
Puntos: 0
Respuesta: ayuda con SQL!!! Heelp!!

Una pregunta, estás usando SQL Server 2005 o superior ? Si es así, puedes hacer un proyecto Stored Procedure y programarlo con C# o VB y usar toda la potencia de estos lenguajes. Se reduce mucho el código.
Saludos

[URL="http://www.estudiobalana.com.ar/cdqit/"]Carlos[/URL]
  #5 (permalink)  
Antiguo 03/02/2011, 08:57
 
Fecha de Ingreso: octubre-2006
Mensajes: 68
Antigüedad: 17 años, 7 meses
Puntos: 0
Respuesta: ayuda con SQL!!! Heelp!!

Si estoy usando sql2005, incluso puedo usar tmb el 2008,.. que interesante suena eso, me podrías explicar con un breve ejemplo como hacerlo? no sabia q se podia meter codigo en C#, eso sería genial,... espero me puedas ayudar,.. muchas gracias

saludos cordiales
  #6 (permalink)  
Antiguo 03/02/2011, 12:57
 
Fecha de Ingreso: enero-2011
Mensajes: 5
Antigüedad: 13 años, 3 meses
Puntos: 0
Respuesta: ayuda con SQL!!! Heelp!!

Hola van2000, mira deberías tener Visual Studio 2005 o superior y crear un proyecto de Base de Datos. Allí podrás crear clases de tipo StoredProcedures, con propiedades y métodos, tal como lo hacemos habitualmente. El proyecto te pedirá en que base de datos harás el deploy finalmente. Ten en cuenta que la base debe cumplir con estos requisitos:

a) Establecer la opción CLR

La característica de integración Common Language Runtime (CLR) está desactivada de forma predeterminada en Microsoft SQL Server y se debe habilitar con el fin de utilizar los elementos de los proyectos de SQL Server. Para habilitar la integración de CLR, utilizar la opción clr enabled del procedimiento almacenado sp_configure.

SP_CONFIGURE 'clr enabled', 1;
GO
RECONFIGURE;
GO

b) Propiedad TRUSTWORTHY

La base de datos debe tener activada la propiedad TrustWorthy. Para ello se utiliza el siguiente comando

ALTER DATABASE db_name SET TRUSTWORTHY ON

c) Usuario de conexión e implementación

El usuario de conexión a la base de datos debe tener permiso External Access, para que el proyecto Visual Studio pueda implementar el Stored Procedure.

GRANT EXTERNAL ACCESS ASSEMBLY TO conn_user

Puedes programar usando todos los recursos de C# o VB según prefieras y testear hasta que esté listo. Cuando hagas el deploy, se crearán los siguientes objetos:

Assemblies / assembly_name
Programmability / Stored Procedures / sp_name

Los stored procedures se pueden ejecutar, programar y tratar como cualquier otro creado por T-SQL.

Saludos

[URL="http://www.estudiobalana.com.ar/cdqit/"]Carlos[/URL]
  #7 (permalink)  
Antiguo 04/02/2011, 09:49
 
Fecha de Ingreso: octubre-2006
Mensajes: 68
Antigüedad: 17 años, 7 meses
Puntos: 0
Respuesta: ayuda con SQL!!! Heelp!!

Muchas gracias! ya estoy trabajando como me dijiste!!

Saludos.. :)

Etiquetas: sql
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:09.