Очевидно, что вы сделали все возможное для перевода на английский, чтобы получить ответ на свой вопрос. Я понимаю элементы запроса, но не знаю, почему / что вы конкретно пытаетесь получить или исключить. Кроме того, почему все в пределах одного запроса. То, что я предлагаю, это один запрос, чтобы получить все элементы, если они существуют или нет, и только что добавил несколько столбцов «флагов», которые вы можете использовать или не ограничивать позже.
Короче говоря, ЛЕВОЕ СОЕДИНЕНИЕ от San_Proposta к вашему San_Negocio по общему идентификатору в основном устраняет необходимость в столбце вашего флага 1 или 2, чтобы определить, существует ли запись в другой. Если он находит совпадение, отлично, независимо от того, есть ли в файле параметр ложного флага. Оттуда вы можете обнаружить, что префикс IF () совпадает с другими кодами состояния в других ваших столбцах.
select
SP.*,
CASE WHEN SN.Proposta_ID IS NULL THEN "No" ELSE "Yes" END as FoundInSanNegocio
from
San_Proposta SP
LEFT JOIN San_Negocio SN
ON SP.Proposta_ID = SN.Proposta_ID
WHERE
SN.Proposta_ID IS NULL
OR NOT SN.ValidaCaptacao = SN.ValidaVenda
В предложении Имеются ИСКЛЮЧИТЕЛЬНО те, которые найдены в San_Negocio, а коды имеют одинаковое значение.
Теперь вы можете просматривать все записи и иметь все статусы в одном по столбцам «флаг».
Найден или нет (опять-таки, не имеет значения для вашего столбца флага. Если у него есть ключ, он найден в левом соединении).
Если он НЕ БЫЛ найден, тогда для столбца «HasSameValidaCode» будет задано значение «n / a» (не применимо), в противном случае будет установлено значение «То же» или «Разное».