Yo preferiría usar un NOT EXISTS, que según el motor (Desconozco lo que hace en MsSql) cuando encuentra al menos un registro deja cancela la subconsulta:
Código:
SELECT *
FROM TABLAX
WHERE datepart(dy,fecha)=datepart(dy,getdate())
AND NOT EXISTS (SELECT 1
FROM TABLAY
AND TABLAX.IDACCION = TABLAY.IDACCION
...)
Saludos!