select month, months_out from (
    select month,
        GENERATE_ARRAY(0, DATE_DIFF(CURRENT_DATE(), month, MONTH)) as months,
    from UNNEST(
        (select 
            GENERATE_DATE_ARRAY(CAST([STARTING_DATE] AS DATE), CAST(max(date_field) AS DATE), 
                INTERVAL 1 MONTH) as date
        from [SOME_TABLE_WITH_A_DATE_FIELD])
    ) as month
) CROSS JOIN UNNEST(months) as months_out