Purtroppo, le funzioni della finestra in SQL Server 2005 non sono abbastanza potenti. Lo risolverei usando una sottoquery correlata.
La sottoquery correlata conta il numero di volte in cui una persona ha acquistato l'articolo entro 14 giorni da ogni acquisto (e senza contare il primo acquisto).
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
Potresti voler inserire anche il limite di tempo nella sottoquery.
Un indice sulle transactions(personnumber, itemnumber, transactionnumber, itemdate)
potrebbe aiutare questo a funzionare molto più velocemente.