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!