Неясно, под «предыдущим» вы подразумеваете date
, fltnbr
или оба. Далее предполагается, что вы имеете в виду fltnbr
.
Использовать lag()
:
select t.*
from (select t.*,
lag(stat_ind) over (order by fltnbr) as prev_stat_ind
from t
) t
where prev_stat_ind = 1;
РЕДАКТИРОВАТЬ:
Если вы хотите строки после последний «1», затем:
select t.*
from t
where t.fltnbr > all (select t2.fltnbr from t t2 where t2.stat_ind = 1);
Обратите внимание, что здесь используется > all
. Это обрабатывает случай, когда нет строк с состоянием 1
. Вы также можете использовать:
select t.*
from t
where t.fltnbr > (select coalesce(max(t2.fltnbr, t.fltnbr - 1)
from t t2
where t2.stat_ind = 1
);