Por desgracia, las funciones de ventana en SQL Server 2005 simplemente no son lo suficientemente poderosas. Resolvería esto usando una subconsulta correlacionada.
La subconsulta correlacionada cuenta la cantidad de veces que una persona compró el artículo dentro de los 14 días posteriores a cada compra (sin contar la primera 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
Es posible que también desee poner el límite de tiempo en la subconsulta.
Un índice de transactions(personnumber, itemnumber, transactionnumber, itemdate)
podría ayudar a que esto funcione mucho más rápido.