Учитывая вышеизложенное, запрос будет следующим

приведен пример того, чего я пытаюсь достичь в базе данных Redshift.

У меня есть переменнаяcurrent_value и я хочу создать новый столбецvalue_desired это:

такой же какcurrent_value если предыдущая строка равна нулюравно последнему предшествующему ненулевому значению, если предыдущая строка ненулевая

Это звучит как легкая задача, но я еще не нашел способ сделать это.

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

Я пробовал с функцией LAG (), но я могу получить только предыдущее значение (не первое в блоке «ненулевое»), вот мое взятие:

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

Любая помощь высоко ценится, спасибо.

Ответы на вопрос(3)

Ваш ответ на вопрос