Que tal k8azo.
Primero, una observación.
La consulta:
Código:
"select top 4 total from totalsem where idempleado =455 oreder by tstamp desc"
Te devuelve los últimos cuatro pagos, no los "pagos" de las últimas cuatro semanas, a mi entender claro.
Lo anterior pensado en que a un empleado quiza sólo le han pagado dos veces en las últimas cuatro semanas.
Sugerencia.
De ser cierto lo anterior podemos hacer lo siguiente:
Código:
DECLARE @FechaIni
-- Obtener fecha de hace 4 semanas.
SET @FechaIni = DateAdd(ww, -4, getdate() ) -- Aquí puede ser -4 ó -5, haz pruebas
-- Obtenemos totales( o promedios) de las últimas cuatro semanas.
select idempleado, AVG(total) as Prom4
INTO #tmpProm4
from totalsem
where tstamp >= @FechaIni
---------- Lo que esta en color seguramente tienes que hacer una conversión
-- Por último la cruzamos contra los empleados
SELECT e.*, t.Prom4 as Promedio
FROM Empleado e
INNER JOIN #tmpProm4 t ON e.idempleado = t.idempleado
-- borramos la temporal
DROP TABLE #tmpProm4
Si la solución no esta total, va más o menos por ahí.
Saludos y suerte!!