Я думаю, что это можно решить, добавив больше условий в предложение WHERE
. Либо запись принадлежит интервалу анализа, либо это самая последняя запись до начала периода анализа для соответствующего субъекта. Последнее условие может быть выражено с использованием условия NOT EXISTS
и коррелированного подзапроса.
Попробуйте:
SELECT *
FROM [ActorValue] a
WHERE
ActorId IN (5, 8, 12, [...])
AND
(
(
Timestamp >= '2019-02-01'
AND Timestamp <= '2019-04-01'
)
OR (
Timestamp < '2019-02-01'
AND NOT EXISTS (
SELECT 1 FROM [ActorValue] a1
WHERE
a1.ActorId = a.ActorId
AND a1.Timestamp < '2019-02-01'
AND a1.Timestamp > a.Timestamp
)
)
Если Вы указываете smptserver, несомненно, установят Ваше 'sendusing' поле на 2 (или cdoSendUsingPort) также:
objMsg.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
objMsg.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "localhost"
objMsg.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
objMsg.Configuration.Fields.Update