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

SQL Menjaga jumlah kejadian

Pendekatan paling sederhana (dan mungkin paling efisien) adalah dengan menggunakan ROW_NUMBER() :

SELECT [Date], Code, [Count] = ROW_NUMBER() OVER (PARTITION BY Code ORDER BY [Date])
 FROM dbo.YourTableName
 ORDER BY [Date];

Untuk bersenang-senang, Anda juga dapat menyelesaikannya dengan cara ini di SQL Server 2012. Jika Date unik:

SELECT [Date], Code, [Count] = COUNT(*) OVER (PARTITION BY Code ORDER BY [Date]
  RANGE UNBOUNDED PRECEDING)
 FROM dbo.YourTable
 ORDER BY [Date];

Atau lebih sederhana:

SELECT [Date], Code, [Count] = COUNT(*) OVER (PARTITION BY Code ORDER BY [Date])
 FROM dbo.YourTable
 ORDER BY [Date];

Jika Date tidak unik, dan jika Anda tidak menginginkan ikatan (jumlah yang sama untuk kombinasi tanggal+kode yang identik), Anda perlu menggunakan ROWS yang lebih mahal , yang menggunakan spool pada disk:

SELECT [Date], Code, [Count] = COUNT(*) OVER (PARTITION BY Code ORDER BY [Date]
  ROWS UNBOUNDED PRECEDING)
 FROM dbo.YourTable
 ORDER BY [Date];

Anda mungkin ingin mencoba setiap opsi ini di meja Anda untuk melihat seperti apa performanya.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. menggunakan variabel Tabel dengan sp_executesql

  2. Subsonic 2.2 Generated Property untuk SQL Server 2008 Date

  3. Bagaimana cara menyimpan kolom pilih dalam variabel?

  4. ganti kolom yang dihitung dengan logika yang berfungsi dengan INSERT

  5. Buat polyline geografi dari titik di T-SQL