Я - SQL серверный программист, и если бы ваш вопрос касался SQL сервера, тогда решение было бы таким:
;WITH cte AS
(
SELECT TOP (DATEDIFF(MONTH, '2020-03-03', '2020-06-06') + 1)
Format(DateAdd(MONTH, ROW_NUMBER() OVER(ORDER BY a.object_id) - 1, '2020-03-03'), 'MM',
'en-US') AS MonthNumber
FROM sys.all_objects a
)
SELECT '(' + String_Agg(MonthNumber, ', ') + ')' AS Result
FROM cte;
Я проверил приведенное выше, и оно вернет '(03 , 04, 05, 06) 'по желанию. Я сделал все возможное, чтобы переписать указанное выше серверное решение SQL в Oracle SQL, но в настоящий момент я не могу его протестировать. Вы можете попробовать:
WITH cte AS
(
SELECT TOP (MONTHS_BETWEEN (TO_DATE('06/06/2020','DD/MM/YYYY'),
TO_DATE('03/03/2020','DD/MM/YYYY') ) + 1)
TO_CHAR(ADD_MONTHS(ROW_NUMBER() OVER(ORDER BY a.object_id) - 1, TO_DATE('03/03/2020','DD/MM/YYYY')), 'MM')
AS MonthNumber
FROM sys.all_objects a
)
SELECT '(' + LIST_AGG(MonthNumber, ', ') + ')' AS Result
FROM cte;