Zoek je zoiets?
select *
from MY_TABLE
where (id, name) in ((1,'new'), (2, 'old')) and
date between effectiveDate and termDate
Dit zoekt naar de paren in een lijst en controleert vervolgens de datums tussen een reeks datums.
BEWERKEN:
Ik denk dat je dit in meerdere clausules wilt opsplitsen, één voor elke set waarden:
where (id = 1 and name = 'new' and date between eff1 and term1) or
(id = 2 and name = 'old' and date between eff2 and term2) or
. . .