Můžete deklarovat proměnnou tabulky (nebo parametr, pokud je součástí procedury nebo funkce) a použít ji pro not in
část:
DECLARE @NotIn table (
NotInValues int
)
INSERT INTO @NotIn Values
('00009000'),
('00009900'),
('00009906')
a použijte jej ve svém kódu takto:
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
Poznámka č. 1: pro velký počet hodnot, not exists bude pravděpodobně fungovat lépe než not in
Poznámka č. 2: Pokud je součástí uložené procedury, budete muset vytvořit uživatelsky definovaný typ tabulky a použít jej k deklaraci parametru s hodnotou tabulky. Parametry s hodnotou tabulky jsou také pouze pro čtení, takže provádění příkazů DML (insert/update/delete) na nich způsobí chybu.
Chcete-li vytvořit udt:
CREATE TYPE IntegerList As Table
(
IntValue int
)
Chcete-li jej deklarovat v seznamu parametrů uložené procedury:
CREATE PROCEDURE procedureName
(
@IntList dbo.IntegerList READONLY
-- Note that the readonly must be a part of the parameter declaration.
)