Соедините две таблицы в нескольких столбцах и верните только записи из первой таблицы, которые не во второй - PullRequest
0 голосов
/ 18 марта 2020

У меня есть таблица 1 с данными и таблица 2 в качестве справочной таблицы с метаданными. Мне нужен запрос, который возвращает все записи из таблицы 1, где ни один столбец в таблице 1 не существует в таблице два. Следующий запрос работает хорошо для одного столбца, но если я использую более одного столбца в моем объединении, это не так. рабочий запрос:

select
T1.SCENARIO,
T1.year,
T1.period,
T1.ENTITY,
T1.account,
T1.ICP,
T1.MVMTS,
T1.C1,
T1.C2,
T1.C3,
T1.MULTI_GAAP,
T1.VLAUE

из "fccs" .MV_FACT_FCCS T1 левое внешнее объединение "fccs" .V_META_NOT_FOUND V2 при trim (T1.account) = trim (V2.account)

где V2 .account имеет значение null

не работает правильно:

select
T1.SCENARIO,
T1.year,
T1.period,
T1.ENTITY,
T1.account,
T1.ICP,
T1.MVMTS,
T1.C1,
T1.C2,
T1.C3,
T1.MULTI_GAAP,
T1.VLAUE

от "fccs" .MV_FACT_FCCS T1 левое внешнее соединение "fccs" .V_META_NOT_FOUND V2 на триммере (T1.account) = трим (V2 .account) и trim (T1.entity) = trim (v2.entity)

, где V2.account равно нулю или v2.entity равно нулю

Второй запрос продолжает приносить записи из Таблица 1, где есть в таблице 2. Любая помощь приветствуется!

table1

table2

1 Ответ

0 голосов
/ 18 марта 2020

Мне нужен запрос, который возвращает все записи из таблицы 1, где ни один столбец в таблице 1 не существует в таблице два.

Использование not exists:

select ff.*
from "fccs".MV_FACT_FCCS ff
where not exists (select 1
                  from "fccs".V_META_NOT_FOUND mnf
                  where trim(ff.account) = trim(mnf.account)
                 ) or
      not exists (select 1
                  from "fccs".V_META_NOT_FOUND mnf
                  where trim(ff.entity) = mnf.trimc
                 ) ;

Примечание: это отвечает на вопрос как написано . Вы можете иметь в виду, что оба условия не выполнены. В этом случае используйте and вместо or.

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