Você pode declarar uma variável de tabela (ou parâmetro se for parte de um procedimento ou função) e usá-la para o
not in
papel:DECLARE @NotIn table (
NotInValues int
)
INSERT INTO @NotIn Values
('00009000'),
('00009900'),
('00009906')
e use-o em seu código assim:
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
Observação nº 1: para um grande número de valores, não existe provavelmente terá um desempenho melhor do que não em
Observação nº 2: Se for parte de um procedimento armazenado, você precisará criar um tipo de tabela definido pelo usuário e usá-lo para declarar o parâmetro com valor de tabela. Além disso, os parâmetros com valor de tabela são somente leitura, portanto, executar instruções DML (inserir/atualizar/excluir) neles gerará um erro.
Para criar o udt:
CREATE TYPE IntegerList As Table
(
IntValue int
)
Para declará-lo na lista de parâmetros do procedimento armazenado:
CREATE PROCEDURE procedureName
(
@IntList dbo.IntegerList READONLY
-- Note that the readonly must be a part of the parameter declaration.
)