SQL сравнить результаты двух запросов - PullRequest
0 голосов
/ 12 февраля 2020

У меня есть две таблицы с контрактом и почти одинаковыми столбцами, но разным типом контракта, и мне нужно выяснить, какие компании не проводили транзакций более 6 месяцев.

Как мне это сделать :

Я могу запросить обе таблицы для получения правильных результатов, но даже если у компании нет записи в ContractList1

У них может быть контракт в ContractList2.

My SQL запрос результатов выглядит следующим образом:

Select Company, TransActionDate  
from ContractList1 
group by Company
having max("TransActionDate") <= TO_DATE('01-01-2019', 'DD-MM-YYYY')
order by Company asc

Select Company, TransActionDate 
from ContractList2 
group by Company
having max("TransActionDate") <= TO_DATE('01-01-2019', 'DD-MM-YYYY')
order by Company asc

Я не могу присоединиться к ним правильно, потому что компания в ContractList2 имеет дополнительные значения (код страны и идентификатор)

Результат в ContractList1:

COMPANY       TransActionDate
----------+-------------------
AXPO      |   14.05.19

Результат в ContractList2

COMPANY                       TransActionDate
--------------------------+-------------------
AXPO (CZ) [002354.CZ]     |   14.05.19

Итак, мой вопрос: как мне объединить две таблицы, чтобы увидеть все компании, у которых не было транзакций в течение 6 месяцев.

1 Ответ

1 голос
/ 12 февраля 2020

Если одно и то же правило работает для всех названий компаний в таблице ContractList2, я имею в виду, если все названия компаний разделяются открывающими скобками, то вы можете использовать регулярное выражение для разделения строки компании до символа ( внутри подзапрос, содержащий оператор UNION в виде

SELECT Company, MAX(TransActionDate) AS TransActionDate
  FROM
  (
    SELECT Company, TransActionDate FROM ContractList
    UNION 
    SELECT regexp_substr(Company,'[^(]+') AS Company, TransActionDate FROM ContractList2
   )
 GROUP BY Company
HAVING MAX(TransActionDate) <= TRUNC(sysdate) - INTERVAL '6' MONTH

, чтобы получить все компании, у которых не было транзакций в течение последних шести месяцев.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...