Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   Consulta Complicada (https://www.clubdelphi.com/foros/showthread.php?t=32528)

tcp_ip_es 08-06-2006 16:40:18

Consulta Complicada
 
Siento el nombre del hilo pero no se como resumir mi problema en una línea.

Os cuento lo mismo es muy fácil y hoy yo estoy denso pero bueno... ahi va...

Tengo una tabla(Configuracion) con un único registro en el cual hay un campo llamado FechaActiva y contiene una fecha.

Bien ahora tengo otra tabla(CalendarioLaboral) en el que cada registro contiene un campo que le llamo Fx_Imputa donde están introducidos todos los días laborables del año.

Bueno pues lo que quiero es hacer una consulta que me saque la cuenta(count) de registros en la tabla CalendarioLaboral dependiendo del valor del campo FechaActiva de la tabla Configuracion) ;

Ejemplo:

Si el valor es 1/1/2006 que me saque los registros que sean menores o iguales a 15 de enero de 2006

Si el valor es 15/1/2006 que me saque los registros que sean mayores a 15 de enero de 2006


El campo FechaActiva solo puede tomar esos dos valores dentro de un mes, es decir que siempre será el uno del mes tal o el quince del mismo mes tal.

Dios mio que lio.... esto lo quiero hacer con una consulta sql, sin paso de parámetros ni nada.

Ya me diréis si me podéis echar una mano :confused:

Muchas gracias de antemano,

Saludos, Tony

luisgutierrezb 08-06-2006 17:43:04

esto es en mssql, a lo mejor te sirve buscando funciones similares con tu manejador de bases:

Código SQL [-]
Select Fx_Imputa from CalendarioLaboral
Where 
(Fx_Imputa <= (Select Top1 FechaActiva+14 From Configuracion) and DatePart(date, (Select Top1 FechaActiva From Configuracion)) = 1)
or
(FX_Imputa > (Select Top1 FechaActiva From Configuracion) and DatePart(date, (Select Top1 FechaActiva From Configuracion)) = 15)

el +14 es para aumentar 14 dias al dia 1, y que te de los 15

tcp_ip_es 09-06-2006 16:05:30

Gracias por tu respuesta, pero no me sirvió al final lo hice asi.

Código SQL [-]
select  if ((select day(FechaActivo) from Configuracion) =1, (select count( Fx_Imputa)
from CalendarioLaboral
where (month(Fx_Imputa) = (select month(FechaActivo) from Configuracion)) and (year(Fx_Imputa) = (select year(FechaActivo) from Configuracion)) and (day(Fx_Imputa) >=1) and (day(Fx_Imputa) <=15))
,(select count(Fx_Imputa)
from CalendarioLaboral
where (month(Fx_Imputa) = (select month(FechaActivo) from Configuracion)) and (year(Fx_Imputa) = (select year(FechaActivo) from Configuracion)) and (day(Fx_Imputa) >15)) 
) as Dias

no se si existirá otra manera....
Saludos, Tony


La franja horaria es GMT +2. Ahora son las 21:02:58.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi