Можете да декларирате променлива на таблица (или параметър, ако е част от процедура или функция) и да я използвате за not in
част:
DECLARE @NotIn table (
NotInValues int
)
INSERT INTO @NotIn Values
('00009000'),
('00009900'),
('00009906')
и го използвайте в кода си по този начин:
where [Location Code] between '0000' and '0040'
and [Item No_] not IN (select NotInValues from @NotIn)
and Gutschrift = '1'
and [Document Date] between @Start and @Ende
Бележка №1: за голям брой стойности not exists вероятно ще се представи по-добре, отколкото не in
Забележка №2: Ако е част от съхранена процедура, ще трябва да създадете дефиниран от потребителя тип таблица и да го използвате, за да декларирате параметъра със стойност на таблицата. Освен това параметрите с таблични стойности са само за четене, така че изпълнението на DML изрази (вмъкване/актуализиране/изтриване) върху тях ще доведе до грешка.
За да създадете udt:
CREATE TYPE IntegerList As Table
(
IntValue int
)
За да го декларирате в списъка с параметри на запомнената процедура:
CREATE PROCEDURE procedureName
(
@IntList dbo.IntegerList READONLY
-- Note that the readonly must be a part of the parameter declaration.
)