Дополнение к соединению SQL? Нужна помощь с T-SQL

Я постараюсь, чтобы мой вопрос звучал как можно более понятно. Заранее приношу извинения за любые ошибки в формулировках, поскольку пытаюсь сформулировать свой вопрос как можно лучше:

Используя T-SQL, мне нужно написать оператор соединения, который даст мне все результаты, совпадающие в таблице A и в таблице. B

И (!)

другой оператор соединения (или продолжение первого соединения), который возвращает все результаты из таблицы A, которые НЕ имеют соответствия в таблице B, НО во втором наборе результатов мне нужно установите для одного из столбцов значение «Н/Д», чтобы идентифицировать записи, у которых нет совпадения.

Другими словами, мне нужно что-то, что вернет все данные в таблице A, но также идентифицирует строки, которые не соответствуют таблице B. Затем эта информация используется в отчете.

Вот что у меня есть на данный момент:

Я закончил первую часть:

LEFT OUTER JOIN dbo.chart B
ON B.UserName = A.user_name

Это дает мне совпадающие записи и только совпадающие записи

Я пытался добавить это второе соединение:

JOIN dbo.chart
ON NOT EXISTS (select * from B.UserName = A.user_name)

Надеюсь, что это даст мне несовпадающие записи (затем я планировал использовать REPLACE в интересующем столбце, чтобы пометить этот столбец как «Н/Д»), но с моим синтаксисом что-то явно не так, поскольку он генерирует исключения.

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

Надеюсь, это не слишком запутало. Любая помощь будет принята с благодарностью.

Спасибо!

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

5
задан user1179071 2 March 2012 в 18:40
поделиться