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'
                    ) ;

Однако не всегда очевидно, что это возвращает все строки, если подзапрос не возвращает строк.

Другие вопросы по тегам