Option 1: use COALESCE
SELECT proposal_id, start_year, end_year
, award_amount/((end_year - start_year) + 1.0) AS avg_award
FROM (
SELECT proposal_id
, extract(year FROM COALESCE(nih_budget_start, nsf_start_date))::int AS start_year
, extract(year FROM COALESCE(nih_budget_end, nsf_end_date))::int AS end_year
, award_amount
FROM proposal
) sub;
Option 2: use generate_series()
SELECT proposal_id
, generate_series(start_year, end_year) AS year
, award_amount/((end_year - start_year) + 1.0) AS avg_award
FROM (
SELECT proposal_id
, extract(year FROM COALESCE(nih_budget_start, nsf_start_date))::int AS start_year
, extract(year FROM COALESCE(nih_budget_end, nsf_end_date))::int AS end_year
, award_amount
FROM proposal
) sub;