У меня есть две таблицы, Таблица 1 с несколькими столбцами, имя, идентификационный номер, адрес и т. Д. c. И Таблица 2 со столбцами, идентификационный номер 1 и идентификационный номер 2 и несколько других столбцов.
Я пытаюсь получить запрос T- SQL, возвращающий все строки в таблице 1 с индикатором, показывающим, соответствует ли номер идентификатора в таблице 1 ID_1 или ID_2 в таблице 2. Результирующий набор будет столбцы из Таблицы 1, плюс индикатор «Совпадение», если идентификационный номер в Таблице 1 соответствует либо ID_1, либо ID_2 в Таблице 2.
- Таблица 1: ID | Имя | Адрес |
- Таблица 2: ID_1 | ID_2
Результат
T1.ID, Name, Address, ("Matched"/"Unmatched") ...
Кроме того, было бы то же самое, чтобы сделать обратное, то есть вместо результата, включая все строки из таблицы 1, которые имеют совпадающий идентификатор в ID_1 или ID_2 в таблице 2, набор результатов будет включать только записи из таблицы 1, где t1.ID = (T2.ID_1 или T2.ID_2)?
SELECT DISTINCT
CASE
WHEN (table1.ID = table2.ID_1 )
THEN 'Matched'
ELSE 'Unmatched'
END AS Status ,
table1.*
FROM
table1
LEFT JOIN
table2 ON table1.ID = table2.ID_1
UNION
SELECT DISTINCT
CASE
WHEN (table1.ID = table2.ID_2)
THEN 'Matched'
ELSE 'Unmatched'
END AS Status,
table1.*
FROM
table1
LEFT JOIN
table2 ON table1.ID = table2.ID_2