select to_char(add_months(t1.dat, -12 * t2.rn), 'yyyy') || '年'
from (select sysdate as dat from dual) t1,
(select rownum as rn from per_grades where rownum <= minFix) t2
union
select to_char(add_months(t1.dat, 12 * t2.rn), 'yyyy') || '年'
from (select sysdate as dat from dual) t1,
(select rownum as rn from per_grades where rownum <= maxFix) t2
union
select to_char(sysdate, 'yyyy') || '年' from dual;
from (select sysdate as dat from dual) t1,
(select rownum as rn from per_grades where rownum <= minFix) t2
union
select to_char(add_months(t1.dat, 12 * t2.rn), 'yyyy') || '年'
from (select sysdate as dat from dual) t1,
(select rownum as rn from per_grades where rownum <= maxFix) t2
union
select to_char(sysdate, 'yyyy') || '年' from dual;