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

Bandingkan Baris Saat Ini dengan Baris Sebelumnya di SQL Server

Anda dapat menggunakan kueri berikut:

SELECT RaidNo, OutComeID, RN,
       CASE 
          WHEN OutComeID <> 16 THEN 0
          ELSE ROW_NUMBER() OVER (PARTITION BY OutComeID, grp ORDER BY RN) 
       END AS Result
FROM (
   SELECT RaidNo, OutComeID, RN,
          RN - ROW_NUMBER() OVER (PARTITION BY OutComeID ORDER BY RN) AS grp
   FROM mytable) AS t
ORDER BY RN

Bidang grp mengidentifikasi irisan (juga disebut pulau) dari catatan berurutan yang memiliki OutComeID yang sama nilai. Kueri luar menggunakan grp untuk menghitung setiap record yang dimiliki oleh '16' mengiris. Catatan milik irisan lain diberi nilai 0 .

Demo di sini




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. tumpukan SQL Server vs. indeks berkerumun

  2. Ubah tipe data kolom menjadi pengenal unik dari bigint

  3. Temukan, Prioritaskan, dan Selesaikan Masalah SQL Server Dalam Beberapa Menit

  4. Memecahkan Masalah saat Bekerja dengan Tanggal dan Waktu di SQL Server

  5. Pemulihan SQL Server 2017