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
संपादित करें
यह क्वेरी सिस्टम तालिका (master.dbo.spt_values
) से संभावित संख्याओं की पूरी सूची बनाकर काम करती है ) जिसमें सीटीई rnCTE
. के अंदर 1000 से अधिक पंक्तियों को समाहित करने की गारंटी है . -1 ROW_NUMBER
में जोड़ा जाता है मान 1 के बजाय 0 से शुरू हों।
बाहरी क्वेरी शून्य प्रदर्शन के लिए संख्याओं को पैड करती है, केवल वही लौटाती है जो स्रोत डेटा में नहीं हैं और 1000 से कम हैं।