Проблемът според мен е, че се опитвате да намерите стойности от вас в изявлението. Това, което трябва да направите, е да превърнете своя in оператор в таблица и след това можете да определите кои стойности са различни.
create table #temp
(
value int
)
insert into #temp values 1
insert into #temp values 2
insert into #temp values 3
insert into #temp values 4
select
id
from
#temp
where
not exists (select 1 from Tab where Col = id)
По-добра алтернатива би била да създадете функция с таблични стойности, която да превърне вашия низ, разделен със запетая, в таблица. Нямам никакъв код подръка, но трябва да е лесен за намиране в Google. В такъв случай трябва да използвате само синтаксиса по-долу.
select
id
from
dbo.SplitStringToTable('2,3,6,7')
where
not exists (select 1 from Tab where Col = id)
Надявам се това да помогне