Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Oracle self join começando com valor mínimo (anos e meses) para cada partição


Use MIN() como uma função de janela:
select t.*,
       (case when col2 < add_months(min(col2) over (partition by col1), 3)
             then col3
        end) as imputed_col3
from t;

Nota:Se col2 não é uma data, você pode convertê-la:
select t.*,
       (case when to_date(col2, 'YYYYMM') < add_months(min(to_date(col2, 'YYYYMM')) over (partition by col1), 3)
             then col3
        end) as imputed_col3
from t;