Вы можете использовать оператор case
, чтобы получить этот статус:
SELECT
t1.id,
t1.name,
t2.Address as add2,
case
when t2.Address is null and exists (select 1 from Table2 temp where temp.id = t1.id) then 'DUPLICATE'
when t2.Address is null then 'NO_RECORD'
else 'OK' end
as 'status'
FROM Table1 as t1
left join Table2 as t2 on t1.id = t2.id and t1.name = t2.Address
order by t1.id
Как вы можете видеть, я добавил and t1.name = t2.Address
к предложению объединения, чтобы убедиться, что у вас есть ненулевые значения Table2, только когда вы этого хотите.
Что касается case when
, первое условие проверяет, если 1) соответствующая запись не была найдена 2) существуют записи с одинаковым идентификатором, что означает «ДУБЛИРОВАНИЕ». Второе условие проверяет, что нет соответствующей записи, и мы уже знаем, что нет дубликатов (как это было бы в первом случае).
Рабочий SQLFiddle .