Du kan deklarera en tabellvariabel (eller parameter om den är en del av en procedur eller funktion) och använda den för not in
del:
DECLARE @NotIn table (
NotInValues int
)
INSERT INTO @NotIn Values
('00009000'),
('00009900'),
('00009906')
och använd den i din kod så här:
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
Obs #1: för ett stort antal värden kommer not exists förmodligen att fungera bättre än inte i
Obs #2: Om det är en del av en lagrad procedur måste du skapa en användardefinierad tabelltyp och använda den för att deklarera tabellvärderad parameter. Parametrar med tabellvärde är också skrivskyddade, så om du utför DML-satser (infoga/uppdatera/ta bort) på dem uppstår ett fel.
Så här skapar du utt:
CREATE TYPE IntegerList As Table
(
IntValue int
)
För att deklarera det i parameterlistan för lagrad procedur:
CREATE PROCEDURE procedureName
(
@IntList dbo.IntegerList READONLY
-- Note that the readonly must be a part of the parameter declaration.
)