Podrias usar la funcion row_number para numerar tus registros y luego hacer un left join con la misma tabla para obtener los valores de la fila anterior ;) algo como esto:
Código SQL:
Ver originalCREATE TABLE #temp
(
id INT,
valor VARCHAR(20)
)
INSERT INTO #temp VALUES (1,'yo')
INSERT INTO #temp VALUES (2,'tu')
INSERT INTO #temp VALUES (3,'el')
INSERT INTO #temp VALUES (4,'nosotros')
SELECT t1.id, t1.valor, t1.rn, t2.id id_anterior, t2.valor AS v_anterior FROM(
SELECT *, ROW_NUMBER() OVER(ORDER BY id ASC) AS rn FROM #temp
) AS t1 LEFT JOIN
(SELECT *, ROW_NUMBER() OVER(ORDER BY id ASC) AS rn FROM #temp) AS t2 ON (t1.rn=t2.rn+1)
Con eso obtienes algo como esto:
id valor rn id_anterior v_anterior
1 yo 1 NULL NULL
2 tu 2 1 yo
3 el 3 2 tu
4 nosotros 4 3 el