sql - SQL(Redshift)如何用同一行的前一个非空列值填充稀疏值
问题描述
如何使用 SQL (Redshift) 用先前的非空列值填充空列的值(0 是值)?
示例: tbl
是它的名称,包含 25 列、“索引”和最多 24 个句点。(中间省略)
指数 | period_1 | period_2 | period_3 | period_24 |
---|---|---|---|---|
1 | 19.8 | 20.1 | 0 | 17.0 |
2 | 15.1 | 0 | 0 | 10.3 |
期望的输出:
指数 | period_1 | period_2 | period_3 | period_24 |
---|---|---|---|---|
1 | 19.8 | 20.1 | 20.1 | 17.0 |
2 | 15.1 | 15.1 | 15.1 | 10.3 |
我们如何为每个索引(行)做到这一点?
解决方案
您可以使用coalesce()
和nullif()
:
select index, period_1,
coalesce(nullif(period_2, 0), period_1),
coalesce(nullif(period_3, 0, nullif(period_2, 0), period_1),
coalesce(nullif(period_4, 0), nullif(period_3, 0, nullif(period_2, 0), period_1),
. . .
from t;
推荐阅读
- linux-kernel - 等待队列中的任务列表与 Binder 分配的不同
- c++ - 如何将 PUT curl 映射到 CPP Curlpp?
- r - 如何将地下天气(wunderground)中的数据提取到 csv 文件中
- c# - 具有多个 Get 方法的 REST API
- c# - 在 if 条件下比较两个字符串会意外产生 false C#
- reactjs - 如何在设置状态之前从我的 reponse.data 中删除坏对象
- flutter - 无法加载资产/缓存图像
- c++ - 在 Windows 上运行 Linux Makefile(.so 文件)
- css - react-native image resizeMode:如何避免空白
- r - R'右键单击'使用R / Rstudio打开csv文件