Najlepszym sposobem może być oddzielenie generatora wierszy od funkcji daty. Wygeneruj więc listę od 0 do 6 i oblicz od niej miesiące. Jeśli chcesz przekazać miesiące, zrób to w klauzuli with
with my_counter as (
Select Level-1 as id
from dual
connect by Level <= 7
)
select to_char(add_months(sysdate, id),'YYYYMM') from my_counter
Poniższy przykład pozwoli Ci wprowadzić daty, których potrzebujesz, aby ustalić różnicę.
with my_counter as (
Select Level-1 as id
from dual
connect by level <= months_between(add_months(trunc(sysdate,'MM'), 6),
trunc(sysdate,'MM')) + 1
)
select to_char(add_months(trunc(sysdate, 'MM'), id),'YYYYMM') from my_counter