Infelizmente, as funções de janela no SQL Server 2005 não são suficientemente poderosas. Eu resolveria isso usando uma subconsulta correlacionada.
A subconsulta correlacionada conta o número de vezes que uma pessoa comprou o item dentro de 14 dias após cada compra (sem contar a primeira compra).
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
Você também pode querer colocar o limite de tempo na subconsulta.
Um índice em
transactions(personnumber, itemnumber, transactionnumber, itemdate)
pode ajudar isso a correr muito mais rápido.