Sounds to me like you might want to make a MY_YEARS table that has as one column: YEAR_DATE that you could populate with
01-JAN-95
01-JAN-96
01-JAN-97
.
.
.
You could expand on this to include other months, etc as desired.
Then your query would be something like
SELECT c.customer_name, y.month_year
FROM customers c,
year_date y,
(SELECT customer_name,
min(customer_date) low_date,
max(customer_date) high_date
FROM customers
GROUP BY customer_name) c1
WHERE c.customer_name = c1.customer_name
AND y.month_year BETWEEN c1.low_date
AND c1.high_date
ORDER BY c.customer_name;
No guarantees - I haven't tested this. But I think it should work.