sql - 基于日期比较sql的列缺失值
问题描述
在获得这个逻辑方面需要帮助。我在一个表中使用两个字段。
DATE RATE
31DEC2014 .
31DEC2015 .
31DEC2016 .
31DEC2017 0.1600
31DEC2018 0.1700
31DEC2019 0.1770
我想用条件填充下面RATE
的第一个非缺失值RATE
DATE > 31DEC2017
DATE RATE
31DEC2014 0.1600
31DEC2015 0.1600
31DEC2016 0.1600
31DEC2017 0.1600
31DEC2018 0.1700
31DEC2019 0.1770
这必须在 SAS PROC SQL 中完成。
提前致谢!
解决方案
这在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
.
推荐阅读
- database - 登台服务器与主生产服务器共享数据库
- laravel - 如何在 Laravel 的 chart.js 包中添加多个数据集
- python - Numpy dstack 导致内存错误
- php - 防止一键多次提交 laravel
- ios - 如何更改圆圈交点的颜色
- python - 使用 selenium 将多个 for 循环组合成 CSV
- qt - QGraphicsItem mouseMoveEvent 太慢
- ios - 无法正确重新加载tableview swift ios
- asp.net-core-mvc - 在 ASP.NET Core 中,是否可以通过将身份验证转发到另一个方案来在一个方案中抢先创建新用户?
- r - 回复:ggplot2,geom_line - x 数据时的线图问题