WITH
DATATEMP
(
DATELIST
) AS
(
VALUES
(
DATE('2022-01-01')
)
UNION ALL
SELECT
DATELIST + 1 DAY
FROM
DATATEMP
WHERE
DATELIST + 1 DAY <= DATE('2030-12-31')
)SELECT * FROM DATATEMP
WITH
DATATEMP0
(
COL1,
COL2
) AS
(
VALUES
(
TO_DATE('2022-01', 'YYYY-MM'),
TO_DATE('2022-01', 'YYYY-MM') + 1 MONTHS
)
UNION ALL
SELECT
COL1 + 1 MONTHS,
COL2 + 1 MONTHS
FROM
DATATEMP0
WHERE
COL1 + 1 MONTHS <= ADD_MONTHS(TO_DATE('2030-12', 'YYYY-MM'), 0)
)
,
DATATEMP AS
(
SELECT
YEAR(COL1) * 100 + MONTH(COL1) AS MONTHS
FROM
DATATEMP0
)SELECT * FROM DATATEMP