首页 > 解决方案 > 基于日期比较sql的列缺失值

问题描述

在获得这个逻辑方面需要帮助。我在一个表中使用两个字段。

DATE                RATE
31DEC2014           .    
31DEC2015           .    
31DEC2016           .    
31DEC2017           0.1600
31DEC2018           0.1700
31DEC2019           0.1770

我想用条件填充下面RATE的第一个非缺失值RATEDATE > 31DEC2017

DATE                RATE
31DEC2014           0.1600    
31DEC2015           0.1600    
31DEC2016           0.1600    
31DEC2017           0.1600
31DEC2018           0.1700
31DEC2019           0.1770

这必须在 SAS PROC SQL 中完成。

提前致谢!

标签: sqlsas

解决方案


这在proc sql中相当复杂。作为select

select t.*,
       coalesce(t.rate, tt.rate) as imputed_rate
from t join
     (select t.*
      from t join
           (select min(date) as min_date
            from t t2
            where rate is not null
           ) tt
           on t.date = tt.min_date
     ) td;

这在使用retain.


推荐阅读