Sie können eine Tabellenvariable (oder einen Parameter, wenn er Teil einer Prozedur oder Funktion ist) deklarieren und für not in
verwenden Teil:
DECLARE @NotIn table (
NotInValues int
)
INSERT INTO @NotIn Values
('00009000'),
('00009900'),
('00009906')
und verwenden Sie es wie folgt in Ihrem Code:
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
Anmerkung 1: für eine große Anzahl von Werten wird notexists wahrscheinlich besser abschneiden als notin
Anmerkung 2: Wenn es Teil einer gespeicherten Prozedur ist, müssen Sie einen benutzerdefinierten Tabellentyp erstellen und ihn verwenden, um den Tabellenwertparameter zu deklarieren. Außerdem sind Tabellenwertparameter schreibgeschützt, sodass die Ausführung von DML-Anweisungen (Einfügen/Aktualisieren/Löschen) für sie einen Fehler auslöst.
So erstellen Sie die UDT:
CREATE TYPE IntegerList As Table
(
IntValue int
)
So deklarieren Sie es in der Parameterliste der gespeicherten Prozedur:
CREATE PROCEDURE procedureName
(
@IntList dbo.IntegerList READONLY
-- Note that the readonly must be a part of the parameter declaration.
)