You can try something like this that does not use dynamic SQL.
DECLARE @myTable TABLE (myValue INT)
INSERT INTO @myTable ( myValue ) VALUES ( 5)
INSERT INTO @myTable ( myValue ) VALUES ( 6)
INSERT INTO @myTable ( myValue ) VALUES ( 7)
INSERT INTO @myTable ( myValue ) VALUES ( 8)
INSERT INTO @myTable ( myValue ) VALUES ( 9)
INSERT INTO @myTable ( myValue ) VALUES ( 10)
DECLARE @prev_records INT = 2
;WITH CTE as
(
SELECT ROW_NUMBER() OVER(ORDER BY myValue) rn,myValue FROM @myTable
)
SELECT (SELECT SUM(myValue) FROM CTE t2 WHERE t2.rn BETWEEN (t1.rn - @prev_records) AND t1.rn )
FROM CTE t1
SUM(myValue) OVER() - , N .