Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

nhiều giao dịch trong một khoảng thời gian nhất định, bị giới hạn bởi phạm vi ngày

Than ôi, các hàm cửa sổ trong SQL Server 2005 không đủ mạnh. Tôi sẽ giải quyết vấn đề này bằng cách sử dụng một truy vấn con có liên quan.

Truy vấn con tương quan đếm số lần một người đã mua mặt hàng đó trong vòng 14 ngày sau mỗi lần mua hàng (và không tính lần mua hàng đầu tiên).

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

Bạn cũng có thể muốn đặt giới hạn thời gian trong truy vấn con.

Chỉ mục về transactions(personnumber, itemnumber, transactionnumber, itemdate) có thể giúp điều này chạy nhanh hơn nhiều.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Thủ tục lưu trữ bị treo dường như không có lời giải thích

  2. Kết nối với SQL Server từ Nodejs

  3. Chuỗi kết nối SQL Server trong mã so với tệp cấu hình trong trang ASP.NET

  4. Làm cách nào để chỉ chọn mục nhập mới nhất trong bảng?

  5. Có thể sử dụng `SqlDbType.Structured` để chuyển các Tham số Giá trị Bảng trong NHibernate không?