Creo que el problema es que estás tratando de encontrar valores tuyos en la declaración. Lo que debe hacer es convertir su instrucción in en una tabla y luego podrá determinar qué valores son diferentes.
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)
Una mejor alternativa sería crear una función con valores de tabla para convertir su cadena delimitada por comas en una tabla. No tengo ningún código a mano, pero debería ser fácil de encontrar en Google. En ese caso, solo necesitaría usar la siguiente sintaxis.
select
id
from
dbo.SplitStringToTable('2,3,6,7')
where
not exists (select 1 from Tab where Col = id)
Espero que esto ayude