Tyvärr är fönsterfunktionerna i SQL Server 2005 helt enkelt inte tillräckligt kraftfulla. Jag skulle lösa detta med en korrelerad underfråga.
Den korrelerade underfrågan räknar antalet gånger som en person köpte varan inom 14 dagar efter varje köp (och inte räknar det första köpet).
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
Du kanske också vill ange tidsgränsen i underfrågan.
Ett index på transactions(personnumber, itemnumber, transactionnumber, itemdate)
kan hjälpa detta att gå mycket snabbare.