SQL: Отменить предыдущие записи из запроса при выполнении условия
Пожалуйста, мне нужно отбросить записи до того, как будет выполнено условие, и оставить только те, которые совпадают с датой выполнения этого условия и после нее.
Точно так же, если условие не выполняется во всех записях типа, в примере «x1», нам также понадобятся все его записи.
Он входит в хранимую процедуру с использованием Sybase IQ.
Пример...
заранее спасибо
1 ответ
Если я правильно понимаю, вам нужны все записи начиная с этого момента или все записи, если нет
'y'
. Один из способов:
select t.*
from t
where t.date >= (select t2.date
from t t2
where t2.name = t.name and t2.flag = 'y'
) or
not exists (select 1
from t t2
where t2.name = t.name and t2.flag = 'y'
) ;
Вы также можете выразить это, используя
all
(или же
any
):
select t.*
from t
where t.date >= all (select t2.date
from t t2
where t2.name = t.name and t2.flag = 'y'
) ;
Однако не всегда очевидно, что это возвращает все строки, если подзапрос не возвращает строк.