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.