Вы можете использовать обновление с коррелированным подзапросом:
UPDATE yourTable t1
SET value = (SELECT value
FROM (SELECT value, ROWNUM AS rn
FROM yourTable t2
WHERE t2.datetime < t1.datetime AND t2.value IS NOT NULL
ORDER BY datetime DESC)
WHERE rn = 1)
WHERE value IS NULL;
Идея этого обновления состоит в том, чтобы найти, используя подзапрос, самый последний value
, который не является NULL
, чтоближайший к заданному отсутствующему value
.
Если вы вместо этого просто хотите выбрать текущую таблицу для генерации ожидаемого результата, вы можете попробовать:
SELECT
datetime,
CASE WHEN value IS NULL
THEN (SELECT value
FROM (SELECT value, ROWNUM AS rn
FROM yourTable t2
WHERE t2.datetime < t1.datetime AND t2.value IS NOT NULL
ORDER BY datetime DESC)
WHERE rn = 1)
ELSE value END AS value
FROM yourTable t1;