Уви, прозоречните функции в SQL Server 2005 просто не са достатъчно мощни. Бих решил това с помощта на корелирана подзаявка.
Корелираната подзаявка отчита колко пъти дадено лице е закупило артикула в рамките на 14 дни след всяка покупка (без да се брои първата покупка).
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
Може да искате да поставите времевото ограничение и в подзаявката.
Индекс на transactions(personnumber, itemnumber, transactionnumber, itemdate)
може да помогне това да работи много по-бързо.