Вы можете использовать это, чтобы найти предыдущее не null
значение для field5
(если оно существует):
select
coalesce(t.field5, (
select tt.field5 from tablename tt where tt.field19 = (
select max(tablename.field19) from tablename where tablename.field19 < t.field19 and tablename.field5 is not null)
)
) as field5,
t.field19
from tablename t
Схема (SQLite v3.26)
CREATE TABLE tablename ( field5 TEXT, field19 INTEGER );
insert into tablename (field5, field19) values
('Dr1', 1),
(null, 2), (null, 3),
('Td', 4),
('Td', 5), (null, 6), (null, 7),('Dr1', 8),(null, 9),('Td', 10),(null, 11),(null, 12);
Запрос № 1
select * from tablename;
| field5 | field19 |
| ------ | ------- |
| Dr1 | 1 |
| | 2 |
| | 3 |
| Td | 4 |
| Td | 5 |
| | 6 |
| | 7 |
| Dr1 | 8 |
| | 9 |
| Td | 10 |
| | 11 |
| | 12 |
Запрос № 2
select
coalesce(t.field5, (
select tt.field5 from tablename tt where tt.field19 = (
select max(tablename.field19) from tablename where tablename.field19 < t.field19 and tablename.field5 is not null)
)
) as field5,
t.field19
from tablename t;
| field5 | field19 |
| ------ | ------- |
| Dr1 | 1 |
| Dr1 | 2 |
| Dr1 | 3 |
| Td | 4 |
| Td | 5 |
| Td | 6 |
| Td | 7 |
| Dr1 | 8 |
| Dr1 | 9 |
| Td | 10 |
| Td | 11 |
| Td | 12 |
Просмотр на БД Fiddle