sql >> Databasteknik >  >> RDS >> Oracle

Oracle self join börjar med lägsta värde (årmånader) för varje partition

Använd MIN() som en fönsterfunktion:

select t.*,
       (case when col2 < add_months(min(col2) over (partition by col1), 3)
             then col3
        end) as imputed_col3
from t;

Obs:Om col2 inte är ett datum, du kan konvertera det:

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;



  1. Ta bort MariaDB eller MySQL helt från CentOS 7 eller RHEL 7

  2. SQL-fråga för att skapa databas i MySQL

  3. Att välja rader baserat på några regler

  4. SQL Server:RowVersion motsvarande i Oracle