Я использую запрос для заполнения нулевых значений, используя функцию 'first_value' из sql
Весь запрос с примером выглядит следующим образом:
WITH example (date,close) AS
(VALUES
('12:00:00',3),
('12:00:01',4),
('12:00:01',5),
('12:00:03',NULL),
('12:00:04',NULL),
('12:00:05',3)
)
SELECT * INTO temporary table market_summary FROM example;
select
date,
cccc,
first_value(cccc) over (partition by grp_close) as corrected_close
from (
select date, close as cccc,
sum(case when close is not null then 1 end) over (order by date) as grp_close
from market_summary
) t
Результат:
date cccc corrected_close
1 12:00:00 3 3
2 12:00:01 4 4
3 12:00:01 5 4
4 12:00:03 NULL 4
5 12:00:04 NULL 4
6 12:00:05 3 3
Здесь, в этом примере, «date» используется в качестве столбца order_by в запросе, но имеет дубликат «12: 00: 01». Нулевые значения заполняются '4', что в идеале не правильно, так как я хочу, чтобы нулевые значения были заполнены предыдущими ненулевыми значениями, которые в этом случае '5', а не '4', так что результат должен быть таким, как показано ниже :
date cccc corrected_close
1 12:00:00 3 3
2 12:00:01 4 4
3 12:00:01 5 5
4 12:00:03 NULL 5
5 12:00:04 NULL 5
6 12:00:05 3 3
Как мне изменить запрос, чтобы он соответствовал моим требованиям?