У меня есть эта таблица, и я должен заполнить значение последним ненулевым значением. Нулевое значение может быть последовательным (одно или несколько).
| 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
Возникает проблема, если в середине стоит NULL. Он получает 5 вместо 1. dbfiddle.uk/…
@sparkle ты прав. Проверьте мой отредактированный ответ.