Вы можете сделать это, сгруппировав TableB и используя TableA в качестве фильтра.
select
min(date) as StartDate
,max(date) as EndDate
,Month
from TableB
where date >= (select StartDate from TableA)
and date <= (select EndDate from TableA)
group by Month,Year
Если в таблице B больше строк (дополнительный столбец id
):
select
min(date) as StartDate
,max(date) as EndDate
,Month
,a.id
from TableB b
join TableA a
on b.Date between a.StartDate and a.EndDate
group by id,Month,Year