Вы можете использовать рекурсивный запрос для подсчета недель, а затем объединить его с таблицей
with cte as (
select min(effweek) week, max(expweek) max_week from mytable
union all
select week + 1, max_week from cte where week < max_week
)
select c.week, count(t.id_num) cnt
from cte c
left join mytable t on c.week between t.effweek and t.expweek
group by c.week
order by c.week
(упрощенно) демонстрация в DB Fiddle :
week | cnt
---: | --:
12 | 2
13 | 1
14 | 1