Ver Mensaje Individual
  #4 (permalink)  
Antiguo 25/03/2014, 12:01
Avatar de Libras
Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 18 años, 4 meses
Puntos: 774
Respuesta: devolver la diferencia de valor entre una fila siguente

Código SQL:
Ver original
  1. CREATE TABLE #temp
  2. (
  3. debe INT,
  4. haber INT
  5. )
  6.  
  7.  
  8. CREATE TABLE #resultado
  9. (
  10. debe INT,
  11. haber INT,
  12. saldo INT,
  13. rn INT IDENTITY(1,1)
  14. )
  15.  
  16.  
  17. INSERT INTO #temp VALUES (1000,750)
  18. INSERT INTO #temp VALUES (5000,6500)
  19. INSERT INTO #temp VALUES (760 ,1000)
  20. INSERT INTO #temp VALUES (10560 ,5000)
  21. INSERT INTO #temp VALUES (2300 ,1560)
  22.  
  23. SELECT *, IDENTITY(INT,1,1) AS rn INTO #temp2 FROM #temp
  24.  
  25. DECLARE @x INT
  26. DECLARE @saldo INT
  27. DECLARE @suma INT
  28. SET @x=1
  29. SET @saldo=0
  30. while (@x<=(SELECT COUNT(*) FROM #temp2))
  31. BEGIN
  32.    
  33.     INSERT INTO #resultado
  34.         SELECT debe,haber,debe-haber + @saldo AS saldo FROM #temp2 WHERE rn=@x
  35.  
  36.     SELECT @saldo=saldo FROM #resultado WHERE rn=@x
  37.        
  38. SET @x=@x+1
  39. END
  40.  
  41.  
  42. SELECT * FROM #resultado

lo mismo, con un solo query no puedes obtener lo que necesitas ya que ocupas los acumulados....
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me