Вы можете использовать рекурсивный CTE:
with yyyymm as (
select customerid,
datefromparts(year(activedate), month(activedate), 1) as dte,
datefromparts(year(inactivedate), month(inactivedate), 1) as inactivemonth
from Customer
union all
select customerid,
dateadd(month, 1, dte),
inactivemonth
from yyyymm
where dte < inactivemonth
)
select CustomerId, year(dte) * 100 + month(dte)
from yyyymm
order by dte
. Результатом будет первая дата месяца.Если вы хотите, чтобы значение года / месяца было строкой или числом, вы можете отформатировать его соответствующим образом.