geebv
@geebv

Как значение из предыдущей строки перенести в следующую строку?

Исходная таблица

A | B
--+---
1 | 0
2 | 0
3 | 0
4 | 3 <<
5 | 0
6 | 4 <<

Надо превратить в

A | B
--+---
1 | 3
2 | 3
3 | 3
4 | 3 <<
5 | 4
6 | 4 <<

Нулевые значения заполнить последним встретившимся не нулевым значением
  • Вопрос задан
  • 198 просмотров
Пригласить эксперта
Ответы на вопрос 1
@XareH
with recursive tbl as (
SELECT * FROM (values
(1,0),(2,0),(3,0),(4,3),
(5,0),(6,0),(7,4),
(8,0),(9,0),(10,7))
AS t(a,b)
)
,rez as (SELECT * FROM tbl where a=10
UNION
SELECT tbl.a,case when tbl.b=0 then rez.b else tbl.b end FROM tbl,rez where tbl.a=rez.a-1
)
SELECT * FROM rez order by a
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы