Ver Mensaje Individual
  #2 (permalink)  
Antiguo 17/01/2012, 13:18
Avatar de Andres95
Andres95
Colaborador
 
Fecha de Ingreso: diciembre-2004
Mensajes: 1.802
Antigüedad: 19 años, 11 meses
Puntos: 38
Respuesta: Duda con condicional

No solo es una condicion, hay que tomar en cuenta que cuando programas en TSQL no se debe hacer pensando en ciclos sino en conjuntos...

Suponiendo que se tienen las sigs tablas:

Empleados

#DIAS_EN_RANGO - una tabla con los dias a procesar dentro del rango deseado, por ejemplo fecha actual mas 7 dias (en ella se incluye el date part para saber si es fin de semana).

#DiasFestivos - Una tabla con los dias marcados como festivos.


Para obtener el conjunto de IDs de empleados a notificar podriamos hacer un select como este:

Código:
INSERT INTO #IDS_EMPS(ID)
SELECT   E.ID
FROM   #Empleados E
INNER JOIN
       #DIAS_EN_RANGO R
ON     E.FechaCumple = R.FECHA
LEFT JOIN
		#DiasFestivos D
ON     E.FechaCumple = D.Fecha
WHERE  E.Notificado = 0
	   AND (  
			  --------------------------------------------------------------------
			  -- Los que cumplen hoy 
			  --------------------------------------------------------------------
			  E.FechaCumple = @CURRENT_DATE  
			  --------------------------------------------------------------------
			  -- Los que cumplen en dia feriado o 
			  -- en fin de semana y no hay otro dia habil
			  --------------------------------------------------------------------
			 OR (
			        E.FechaCumple <> @CURRENT_DATE                       -- cumplen en dias posteriores
			        AND (D.Fecha IS NOT NULL OR R.DATE_PART IN (6,7) )   -- ademas es inhabil o fin
			     )  
			 
			 )

** Ya con la lista de Ids en una temporal puedes recorrerlo uno por uno para obtener la info correspondiente para el envio de cada notificacion...

Saludos!
__________________
La sencillez y naturalidad son el supremo y último fin de la cultura...
--
MCTS : SQL Server 2008, .NET Framework 3.5, ASP.NET Applications.