Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

एमएस एसक्यूएल में किसी श्रेणी से यादृच्छिक मान प्राप्त करें?

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 से कम हैं।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. अपने डेटाबेस प्रदर्शन निगरानी सेटअप की ग्रेडिंग

  2. अंतिम सम्मिलित रिकॉर्ड MS SQL सर्वर खोजें

  3. SQL सर्वर - क्लस्टर बनाम गैर-संकुल सूचकांक का उपयोग कब करें?

  4. टीएसक्यूएल:एक दृश्य बनाएं जो एकाधिक डेटाबेस तक पहुंचता है

  5. CURSOR के अंदर डायनेमिक SQL क्वेरी कैसे बनाएं?