Я создаю хранимую процедуру, в которой я хочу вернуть определенный набор результатов.
У меня есть 2 набора данных, которые я пытаюсь каким-то образом объединить, чтобы он возвращал только записи выбросов (где нет матч). Я думал об использовании UNION и EXCEPT, но, похоже, он не работает с этим сценарием. Чтобы сделать это менее сложным, у меня в настоящий момент есть два CTE в моем pro c (в качестве альтернативы я могу использовать #TempTables).
Результат запроса 1. В приведенном ниже наборе результатов этот запрос вернет 3 поля. Текстовое значение Field3 здесь всегда будет одинаковым.
Field1 Field2 Field3
123 BAK 'Missing in Query 2'
234 HAO 'Missing in Query 2'
345 OPP 'Missing in Query 2'
Результат запроса 2. То же самое здесь, Field3 всегда будет иметь одинаковое текстовое значение.
Field1 Field2 Field3
123 BAK 'Missing in Query 1'
234 HAO 'Missing in Query 1'
678 UTO 'Missing in Query 1'
Желаемый результат: причина почему эти два возвращаются в первой строке (поле 345), отсутствует в запросе 2, а вторая строка отсутствует в запросе 1. Я ищу только совпадения, где Query1.Field1 = Query2.Field1 и Query1.Field2 = Query2. Field2.
Field1 Field2 Field3
345 OPP 'Missing in Query 2' <- from Query 1
678 UTO 'Missing in Query 1' <- from Query 2
Я пытался использовать FULL JOIN для этого, но FULL JOIN возвращает дополнительные 3 столбца со значениями NULL. Я пытаюсь избежать этого и отображать только результат, как показано выше. Любая помощь будет оценена.