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

SQL सर्वर 2008 R2 - द्वीप और अंतराल

कुछ इस तरह से काम करना चाहिए SQL Fiddle

यह अनुक्रमिक डेटा के द्वीपों को SIGN . के लिए समान मान के साथ ढूंढता है और उन्हें इत्ज़िक बेन गण की पंक्ति संख्या तकनीक का उपयोग करके समान समूह मूल्य आवंटित करता है और फिर उन्हें समूहित करता है और उन्हें एकत्रित करता है। CROSS APPLY ... VALUES MIN को अनपिवट करता है और MAX

;WITH T1
     AS (SELECT *,
                ROW_NUMBER() OVER (PARTITION BY SIGN(PctGain) 
                                       ORDER BY WSeqKey) - WSeqKey AS Grp
         FROM   YourTable),
     T2
     AS (SELECT MIN(WSeqKey)  AS BeginSeq,
                MAX(WSeqKey)  AS EndSeq,
                SIGN(PctGain) AS Sign
         FROM   T1
         GROUP  BY Grp,
                   SIGN(PctGain))
SELECT CASE Sign
         WHEN -1 THEN 'Negative'
         WHEN 0 THEN 'Equal'
         WHEN 1 THEN 'Positive'
       END AS [Sign],
       Descriptor,
       SeqKey
FROM   T2
       CROSS APPLY (VALUES('Begin', BeginSeq),
                          ('End',   EndSeq)) V(Descriptor, SeqKey)
ORDER  BY SeqKey 


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. संग्रहित प्रक्रिया में तालिका-मूल्यवान पैरामीटर और इकाई फ्रेमवर्क 4.0

  2. SQL एक varchar से केवल संख्यात्मक मान लेता है

  3. SQL सर्वर में मेमोरी सेटिंग के महत्व को समझना

  4. XML से SQL सर्वर डेटाटाइम में कनवर्ट करते समय मिलीसेकंड गलत है

  5. किसी अन्य सत्र द्वारा उपयोग किए जाने वाले लेन-देन प्रसंग का कारण क्या है