Если вы хотите, чтобы все строки были одинаковыми для заданных year
и id
, просто используйте max()
:
select t.*,
max(total) over (partition by year, id) as imputed_total
from t;
Кажется, что нет необходимости в условных логах c , Вы можете просто сделать:
select t.id, t.year, t.quarter,
max(total) over (partition by year, id) as imputed_total
from t;