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

Penomoran pulau di SQL Server 2012

Jika Anda ingin memberi nomor saja, saya sarankan lag() dengan jumlah kumulatif:

select t.*,
       sum(case when datefrom = dateadd(day, 1, prev_dateto
                then 0 else 1
           end) over (order by itemId, datefrom)
from (select t.*,
             lag(dateto) over (partition by itemid order by datefrom) as prev_dateto
      from table t
     ) t;

case menentukan di mana pulau baru dimulai. Jumlah kumulatif hanya menjumlahkan bendera ini.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Pulihkan Data yang Diperbarui - SQL Server 2005

  2. string yang setara dengan Sum untuk digabungkan

  3. Izin diperlukan untuk melihat daftar tabel di Management Studio

  4. Buat Fungsi Bernilai Tabel di SQL Server

  5. Menangani masalah konkurensi SQL Server