Думаю, я бы подошел к этому как:
SELECT ID, Name, EventTime
FROM (SELECT t.*,
ROW_NUMBER() OVER (PARTITION BY name ORDER BY t.eventtime DESC) as seqnum
FROM table t JOIN
(VALUES ('value1', timevalue1), ('value2', timevalue2), ('value3', timevalue3)
) v(name, timevalue)
ON t.name = v.name and t.eventtime < v.timevalue
) t
WHERE seqnum = 1
ORDER BY EventTime DESC;
Я бы предпочел использовать производную таблицу для таких повторяющихся значений, а не встраивать их в логику запроса.