Здравствуйте.
Необходимо получить поставщиков для товара с действующими контрактами.
В БД Супермага, у контрактов есть колонка "ENDSAT", она отвечает за дату окончания контракта. У данной колонки есть два состояния null и установленная дата. Необходимо отобрать документы у кого ENDSAT null или дата установлена больше чем текущая дата (системная или заданная вручную)
Сам запрос:
SQL код:
select listagg(SMCLIENTINFO.NAME, ', ') within group (order by SMCLIENTINFO.NAME)
from SMCONTRACTS, SMSPECCO, SMDOCUMENTS, SMCLIENTINFO
where SMCONTRACTS.DOCTYPE = SMDOCUMENTS.DOCTYPE and SMCONTRACTS.ID = SMDOCUMENTS.ID
and SMSPECCO.DOCTYPE = SMDOCUMENTS.DOCTYPE and SMSPECCO.DOCID = SMDOCUMENTS.ID
and SMDOCUMENTS.DOCSTATE = 3
and SMCONTRACTS.DOCTYPE = 'CO'
and SMDOCUMENTS.CLIENTINDEX = SMCLIENTINFO.ID
and SMSPECCO.ARTICLE = '002761'
and SMCONTRACTS.ENDSAT IS NULL OR SMCONTRACTS.ENDSAT >= '18.02.2019'
При использовании последнего фильтра с оператором OR, запрос не завершается, ожидал более 5 минут.
По отдельности, каждый из фильтров "SMCONTRACTS.ENDSAT IS NULL" или "SMCONTRACTS.ENDSAT >= '18.02.2019'" работают корректно, но с оператором OR почему-то не хочет завершаться.
Можете подсказать в чем ошибка и как ее можно устранить?