retraso para obtener el primer valor no nulo desde el valor nulo anterior

A continuación se muestra un ejemplo de lo que estoy tratando de lograr en una base de datos Redshift.

Tengo una variablecurrent_value y quiero crear una nueva columnavalue_desired es decir:

lo mismo quecurrent_value si la fila anterior es nulaigual al último valor no nulo anterior si la fila anterior no es nula

Parece una tarea fácil, pero todavía no he encontrado una manera de hacerlo.

row_numb     current_value   value_desired
1
2
3            47              47
4
5            45              45
6
7
8            42              42
9            41              42
10           40              42
11           39              42
12           38              42
13
14           36              36
15
16
17           33              33
18           32              33

He intentado con la función LAG () pero solo puedo obtener el valor anterior (no el primero en el bloque "no nulo"), aquí está mi opinión:

SELECT *
    , CASE WHEN current_value is not null and LAG(current_value) is null THEN current_value
           WHEN current_value is not null and LAG(current_value) is not null 
            THEN LAG(current_value)
      ELSE NULL END AS value_desired
  FROM test1

Cualquier ayuda es muy apreciada, gracias.

Respuestas a la pregunta(3)

Su respuesta a la pregunta