В основном вы хотите создать производную таблицу, содержащую входные данные, которые вы проверяете, потому что ограничение ваших результатов только теми идентификаторами, которые вы ищете, никогда не даст вам ложного возврата.Не будет строки для значения, которое не соответствует.
Делая это, вы начинаете с таблицы, которая содержит все номера участков, которые вы ищете, а затем СЛЕДУЕТ ПРИСОЕДИНИТЬСЯ к реальным даннымчтобы вы не потеряли ни одной строки в соединении.Наконец, оператор CASE проверяет, удалось ли соединению соединить существующую строку.
Вы заметите, что эта производная таблица создается серией операторов UNION - по существу, многократно соединяя строки, чтобы создать таблицу в памяти,Вы можете сделать это по-другому, фактически создав «временную таблицу», но я обнаружил, что при отсутствии какой-либо промежуточной обработки этот метод немного быстрее.
SELECT InputTable.parcel, (CASE WHEN Property.parcel IS NOT NULL THEN CAST(1 AS BIT) ELSE CAST(0 AS BIT) END) AS ExistsStatus
FROM (
SELECT '1719309002000' AS parcel UNION
SELECT '1024247013000' UNION
SELECT '1024247008000' UNION
SELECT '1024247001000'
) AS InputTable
LEFT JOIN Property ON Property.parcel = InputTable.parcel AND Property.taxyear = YEAR(GETDATE()) - 1