тут MySQL кривит на связке CTE + оконная функция + COALESCE — оптимизатор скорее всего объединяет CTE в основной запрос так, что rp.start_report_date оказывается NULL внутри COALESCE.
Чище всего — используй третий аргумент LAG вместо обёртки в COALESCE:
lag(t.rasp_time, 1, rp.start_report_date) over(partition by t.vg_id order by t.rasp_time) as prev_rasp_time
Если не поможет — разнеси по уровням: вычисли LAG в raw_data как отдельный столбец lag_rasp_time, COALESCE уже в следующем SELECT:
coalesce(lag_rasp_time, start_report_date) as prev_rasp_time
Можно ещё попробовать хинт NO_MERGE для report_period — Akina в комментарии намекнул правильно.