Если вы работаете в SQL Server 2008, вы можете использовать конструкторы строк, чтобы избежать необходимости явно создавать временную таблицу.
Использование EXISTS
вместо OUTER JOIN
может быть более эффективным, если в вашей базовой таблице могут быть дубликаты имен (это может остановить поиск, как только будет найдена первая подходящая запись для имени).
SELECT name,
CASE
WHEN EXISTS
(SELECT *
FROM yourtable t
WHERE t.name = names.name
)
THEN names.name
END AS Available
FROM (VALUES
('John'), ( 'Adam'),( 'Amy'), ('Frank') ) names (name)