我有这张表,我必须用最后一个非空值填充值。Null 值可以是连续的(一个或多个)。
| date | value |
+------------+-------+
| 2021-01-05 | NULL |
| 2021-01-04 | NULL |
| 2021-01-03 | 3 |
| 2021-01-02 | NULL |
| 2021-01-01 | 1 |
+------------+-------+
预期结果
| date | value |
+------------+-------+
| 2021-01-05 | 3 |
| 2021-01-04 | 3 |
| 2021-01-03 | 3 |
| 2021-01-02 | 1 |
| 2021-01-01 | 1 |
+------------+-------+
我已经尝试过,但它不适用于两个连续的空值。如何设置从最后一个非空行到当前行的范围?如果第一个值为 NULL(例如 2020-12-31 IS null)怎么办?
SELECT
date,
last_VALUE(val)
OVER(
PARTITION BY scope_field
ORDER BY date desc
RANGE BETWEEN '1 day' PRECEDING AND '1 day' FOLLOWING
) last_val
FROM table