यहाँ एक विधि है जो पुनरावर्ती CTE का उपयोग करती है:
with CTE as (
select id, dateStart as dte, dateEnd
from t
union all
select id, dateadd(month, 1, dte), dateEnd
from CTE
where dateadd(month, 1, dte) < dateEnd
)
select id, dte
from CTE;
आप अंतिम परिणाम को अपनी पसंद के किसी भी प्रारूप में बदल सकते हैं। उदाहरण के लिए:
select id, year(dte) * 10000 + month(dte) as yyyymm_int
या
select id, cast(year(dte) * 10000 + month(dte) as varchar(255)) as yyyymm