Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

SQL Server 2008 R2 - Pulau dan Kesenjangan

Sesuatu seperti ini harus melakukan pekerjaan SQL Fiddle

Ia menemukan pulau data berurutan dengan nilai yang sama untuk SIGN dan mengalokasikan nilai pengelompokan yang sama menggunakan teknik nomor baris Itzik Ben Gan kemudian mengelompokkannya dan menggabungkannya. CROSS APPLY ... VALUES unpivot MIN dan 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. Simpan beberapa nilai bit dalam satu kolom tabel

  2. SQL Server 2008 Menjalankan pemicu setelah Sisipkan, Pembaruan mengunci tabel asli

  3. Apa yang BUKAN Operator Logis di SQL Server - Tutorial SQL Server / TSQL Bagian 121

  4. Bagaimana mengembalikan output dari prosedur tersimpan ke dalam variabel di sql server

  5. Bagaimana cara menambahkan kunci utama auto_increment di database SQL Server?