Un self-join collegherà il record corrente con tutti i record che hanno la data di ieri. In questo contesto il raggruppamento per consente di contare molti record con la stessa data. t1
deve essere contabilizzato separatamente, quindi lo stipendio viene aggiunto in seguito e il conteggio (*) viene incrementato per calcolare la media.
Ecco Sql Fiddle con un esempio .
select t1.ClientID,
t1.ClinetDOBs,
(t1.Slaries + sum (t2.Slaries)) / (count (*) + 1) Avg_Slaries
from table1 t1
inner join table1 t2
on t1.ClinetDOBs = dateadd(day, 1, t2.ClinetDOBs)
group by t1.ClientID,
t1.ClinetDOBs,
t1.Slaries