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

beberapa transaksi dalam jangka waktu tertentu, dibatasi oleh rentang tanggal

Sayangnya, fungsi jendela di SQL Server 2005 tidak cukup kuat. Saya akan menyelesaikan ini menggunakan subquery yang berkorelasi.

Subkueri terkait menghitung berapa kali seseorang membeli item dalam 14 hari setelah setiap pembelian (dan tidak termasuk pembelian pertama).

select t.*
from (select t.*,
             (select count(*)
              from t t2
              where t2.personnumber = t.personnumber and
                    t2.itemnumber = t.itemnumber and
                    t2.transactionnumber <> t.transactionnumber and
                    t2.transactiondate >= t.transactiondate and 
                    t2.transactiondate < DATEADD(day, 14, t.transactiondate
             ) NumWithin14Days
      from transactions t
      where transactionDate between '2001-01-01' and '2001-03-01'
     ) t
where NumWithin14Days > 0

Anda mungkin ingin menempatkan batas waktu di subquery juga.

Indeks pada transactions(personnumber, itemnumber, transactionnumber, itemdate) mungkin membantu ini berjalan lebih cepat.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Di SQL Server, bagaimana saya tahu mode transaksi apa yang saya gunakan saat ini?

  2. Apa cara terbaik untuk menyalin database?

  3. JSON_QUERY() Contoh di SQL Server (T-SQL)

  4. Menambahkan petunjuk kueri saat memanggil Fungsi Bernilai Tabel

  5. SQL Bandingkan variabel varchar dengan variabel varchar lain