DECLARE @t TABLE
(VALUE CHAR(3))
INSERT @t
VALUES
('000'),('002'),('005'),('190')
;WITH rnCTE
AS
(
SELECT -1 + ROW_NUMBER() OVER (ORDER BY TYPE, number, name) AS rn
FROM master.dbo.spt_values
)
SELECT RIGHT('000' + CAST( rn AS VARCHAR(11)),3)
FROM rnCTE
WHERE NOT EXISTS ( SELECT 1 FROM @t
WHERE VALUE = rn
)
AND rn < 1000
BEWERKEN
Deze query werkt door de volledige lijst met mogelijke getallen te genereren uit een systeemtabel (master.dbo.spt_values
) die gegarandeerd meer dan 1000 rijen bevat binnen de CTE rnCTE
. -1 is toegevoegd aan ROW_NUMBER
om de waarden te laten beginnen bij 0 in plaats van 1.
De buitenste query-nul vult de getallen voor weergave in en retourneert alleen die welke niet in de brongegevens staan en kleiner zijn dan 1000.