Ver Mensaje Individual
  #2 (permalink)  
Antiguo 17/01/2017, 08:12
Avatar de Libras
Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Duda con envío de campos a una funcion

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 original
  1. CREATE TABLE #temp
  2.   (
  3.   id INT,
  4.   valor VARCHAR(20)
  5.   )
  6.  
  7.   INSERT INTO #temp VALUES (1,'yo')
  8.   INSERT INTO #temp VALUES (2,'tu')
  9.   INSERT INTO #temp VALUES (3,'el')
  10.   INSERT INTO #temp VALUES (4,'nosotros')
  11.  
  12.  
  13.   SELECT t1.id, t1.valor, t1.rn, t2.id id_anterior, t2.valor AS v_anterior  FROM(
  14.   SELECT *, ROW_NUMBER() OVER(ORDER BY id ASC) AS rn FROM #temp
  15.   ) AS t1 LEFT JOIN
  16.   (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
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me