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.