मुझे पूर्णांकों की सूची बनाकर और फिर तारीखों को बढ़ाने के लिए इसका उपयोग करके इन समस्याओं से संपर्क करना सबसे आसान लगता है। यहां एक उदाहरण दिया गया है:
with nums as (
select 0 as n
union all
select n + 1 as n
from nums
where n < 11
)
select rowid, datestart, dateend,
year(dateadd(month, n.n, datestart)) as yr,
month(dateadd(month, n.n, datestart)) as mon
from table t join
nums n
on dateadd(month, n.n - 1, datestart) <= dateend;