Uważam, że problem polega na tym, że próbujesz znaleźć wartości od siebie w oświadczeniu. To, co musisz zrobić, to przekształcić swoje oświadczenie w tabelę, a następnie możesz określić, które wartości są różne.
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)
Lepszą alternatywą byłoby utworzenie funkcji wycenianej w tabeli, która zamieni Twój ciąg oddzielony przecinkami w tabelę. Nie mam pod ręką żadnego kodu, ale powinien być łatwy do znalezienia w Google. W takim przypadku wystarczy użyć poniższej składni.
select
id
from
dbo.SplitStringToTable('2,3,6,7')
where
not exists (select 1 from Tab where Col = id)
Mam nadzieję, że to pomoże