Учитывая вышеизложенное, запрос будет следующим
приведен пример того, чего я пытаюсь достичь в базе данных 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
Любая помощь высоко ценится, спасибо.