Probieren Sie diese Abfrage aus:
select cd.Dt
, t.Dt_next
, cd.customer_id
, cd.buy_time
, cd.money_spent
from (
select Dt
, LEAD(Dt) OVER (PARTITION BY customer_id ORDER BY Dt) AS Dt_next
, customer_id
from (
select distinct Dt, customer_id
from #customer_data
) t
) t
inner join #customer_data cd on t.customer_id = cd.customer_id and t.Dt = cd.Dt
Warum Feld money_spent
hat Float-Typ? Möglicherweise haben Sie Probleme mit Berechnungen. Wandeln Sie es in einen Dezimaltyp um.