Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

Repeticion de datos

Estas en el tema de Repeticion de datos en el foro de SQL Server en Foros del Web. Hola a todos tengo la siguiente consulta lo que hace es que resta dos campos de una tabla y saca un saldo del resultado y ...
  #1 (permalink)  
Antiguo 27/03/2014, 13:27
 
Fecha de Ingreso: marzo-2014
Mensajes: 5
Antigüedad: 10 años, 8 meses
Puntos: 0
Pregunta Repeticion de datos

Hola a todos tengo la siguiente consulta lo que hace es que resta dos campos de una tabla y saca un saldo del resultado y asi sucecibamente el problema que tengo es que si la condicion tiene mas de 2 filas de resultado solo me repite la primera fila no se si alguien me pueda ayudar con respecto a eso se los agradesco de antemano

Código SQL:
Ver original
  1. DECLARE @tbl_saldo TABLE(
  2.     Id INT NOT NULL,
  3.     saldo FLOAT
  4.     );
  5.     DELETE FROM @tbl_saldo
  6.  
  7. DECLARE @prueba FLOAT
  8. DECLARE @debe FLOAT
  9. DECLARE @haber FLOAT
  10. DECLARE @saldo FLOAT
  11. DECLARE @documentoId FLOAT
  12. DECLARE @Id INT
  13.  
  14.  
  15. SET @saldo=0
  16. DECLARE probar CURSOR FOR
  17. SELECT Finanzas.DetalleDocumento.Id,Finanzas.DetalleDocumento.Debe - Finanzas.DetalleDocumento.Haber
  18. FROM Finanzas.DetalleDocumento INNER JOIN
  19. Finanzas.Documento ON Finanzas.Documento.Id =Finanzas.DetalleDocumento.DocumentoId INNER JOIN
  20. Finanzas.Aplicacion ON Finanzas.DetalleDocumento.AplicacionId=Finanzas.Aplicacion.Id  INNER JOIN
  21. Finanzas.Cuenta ON Finanzas.Aplicacion.CuentaId=Finanzas.Cuenta.Id INNER JOIN
  22. Finanzas.Tercero ON Finanzas.Tercero.id=Finanzas.Documento.TerceroId
  23. WHERE        (Finanzas.Tercero.Id = 4365) AND (Finanzas.Documento.Contabilizado = 'True') AND (Finanzas.Cuenta.Id = 2045)
  24. ORDER BY Finanzas.Documento.FechaDocumento ASC
  25.  
  26. OPEN probar
  27. FETCH probar INTO @Id,@prueba
  28. WHILE (@@FETCH_STATUS = 0)
  29.  
  30. BEGIN
  31.  
  32.     -- Lectura de la siguiente fila de un cursor
  33.  
  34.     FETCH probar INTO @Id,@prueba
  35.  
  36.     SET @saldo= @prueba + @saldo
  37.    
  38.     INSERT INTO @tbl_saldo SELECT @Id,@saldo
  39.  
  40.  
  41. END
  42. CLOSE probar
  43.  
  44.  
  45. SELECT * FROM @tbl_saldo
  46. DEALLOCATE probar
  47.  
  48. SELECT RTRIM(Finanzas.Tercero.Nombres) + ' ' + RTRIM(Finanzas.Tercero.Apellidos) AS NombreCompleto, Finanzas.Documento.Descripcion, Finanzas.Documento.FechaDocumento,
  49.        Finanzas.DetalleDocumento.Debe, Finanzas.DetalleDocumento.Haber, temp.saldo, Finanzas.DetalleDocumento.Id, temp.Id,Finanzas.Cuenta.DescripcionCuenta, Finanzas.Cuenta.Codigo
  50.  
  51. FROM            Finanzas.Tercero INNER JOIN
  52.                          Finanzas.Documento ON Finanzas.Tercero.Id = Finanzas.Documento.TerceroId AND Finanzas.Tercero.Id = Finanzas.Documento.TerceroId INNER JOIN
  53.                          Finanzas.DetalleDocumento ON Finanzas.Documento.Id = Finanzas.DetalleDocumento.DocumentoId INNER JOIN
  54.                           @tbl_saldo AS temp ON Finanzas.DetalleDocumento.Id = temp.Id INNER JOIN
  55.                          Finanzas.Aplicacion ON Finanzas.DetalleDocumento.AplicacionId = Finanzas.Aplicacion.Id INNER JOIN
  56.                          Finanzas.Cuenta ON Finanzas.Aplicacion.CuentaId = Finanzas.Cuenta.Id
  57. WHERE        (Finanzas.Tercero.Id =  4365) AND (Finanzas.Documento.Contabilizado = 'True') AND (Finanzas.Cuenta.Id = 2045)
  58. ORDER BY Finanzas.Documento.FechaDocumento ASC
[/CODE]
  #2 (permalink)  
Antiguo 27/03/2014, 14:09
Avatar de 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: Repeticion de datos

primero no uses cursores, ahora quieres ayuda??? pon un ejemplo de tus datos
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me

Etiquetas: sql-sentencia
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 03:20.