Конструктивно.
CREATE TABLE foo (id int, grp bool);
INSERT INTO foo VALUES (1, false), (2, true), (3, false), (4, false), (5, true), (6, false), (7, false), (8, false);
grp - это некое условие.
Получаем такую выборку:
SELECT * FROM foo ORDER BY id;
id grp
1 false
2 true
3 false
4 false
5 true
6 false
7 false
8 false
И нужно получить grp_id ⸺ id предыдущей записи, где grp=true:
id grp grp_id
1 false null
2 true 2
3 false 2
4 false 2
5 true 5
6 false 5
7 false 5
8 false 5
Песочница:
https://www.db-fiddle.com/f/cntG2o6N4CXsYxnkrVEAnY/0