Ver Mensaje Individual
  #3 (permalink)  
Antiguo 12/08/2013, 07:30
1antares1
 
Fecha de Ingreso: marzo-2006
Mensajes: 43
Antigüedad: 18 años, 9 meses
Puntos: 0
De acuerdo Respuesta: Problemas con un Extracto: DEBE, HABER y SALDO

Buen día, Amigo Libras;

Disculpa la tardanza en responder a ver que tal fue tan factible tu solución, que efectivamente me funcionó también. Y agradecido estoy de ello.

Pero te comento, que la desesperación me hizo encontrar otra posible solución, que me ayudó (puede ser con antigua sentencia o de la vieja escuela ), pero por supuesto, aunque sea lenta la consulta, solo es cuestión de seleccionar de vez en cuando y no algo de rutina.

Te la comparto para que también puedas analizarla y saques conclusión de las diferencias: Muy poco común encontrar estas soluciones a nivel Hispano... O por lo que pude investigar...
Código SQL:
Ver original
  1. DECLARE @T TABLE(
  2. FECHA DATETIME,
  3. COMENTARIO NVARCHAR (MAX),
  4. CUENTA VARCHAR(15),
  5. DEBE NUMERIC(15,2),
  6. HABER NUMERIC(15,2)
  7. )
  8.  
  9. INSERT INTO @T
  10. SELECT FECHA, COMENTARIO, CUENTA, DEBE, HABER
  11. FROM DIARIOAPUNTES
  12. WHERE FECHA BETWEEN @STARTDATE AND @ENDDATE;
  13.  
  14. /*
  15. INSERT INTO @T VALUES ('001-0001','20130102',100,0);
  16. INSERT INTO @T VALUES ('001-0001','20130102',0,200);
  17. INSERT INTO @T VALUES ('001-0001','20130102',100,0);
  18. INSERT INTO @T VALUES ('001-0001','20130103',100,0);
  19. INSERT INTO @T VALUES ('001-0001','20130105',0,100);
  20. INSERT INTO @T VALUES ('001-0002','20130105',100,0);
  21. INSERT INTO @T VALUES ('001-0002','20130106',500,0);
  22. */
  23.  
  24. --DEBIT - CREDIT + BALANCE
  25.  
  26. WITH T_ROW AS
  27. (
  28.     SELECT (ROW_NUMBER() OVER(ORDER BY (T1_1.FECHA) ASC)) AS CONTADOR, FECHA, T1_1.CUENTA, T1_1.COMENTARIO, T1_1.DEBE, T1_1.HABER
  29.     FROM @T T1_1
  30. )
  31.  
  32. SELECT TOP(100) T1.CONTADOR, T1.CUENTA, T1.COMENTARIO AS DESCRIPCION, CONVERT(CHAR(10), T1.FECHA, 103) AS FECHA, T1.DEBE, T1.HABER, ROUND(T1.DEBE-T1.HABER + COALESCE(T2.SALDO,0),2) AS SALDO
  33. FROM T_ROW T1
  34.       CROSS APPLY(
  35.             SELECT ROUND(SUM(DEBE)-SUM(HABER),2) AS SALDO
  36.             FROM T_ROW T2
  37.             WHERE T2.CONTADOR < T1.CONTADOR AND T1.CUENTA = T2.CUENTA
  38.       ) AS T2
  39.       WHERE T1.FECHA BETWEEN @STARTDATE AND @ENDDATE
  40.       ORDER BY T1.CUENTA, T1.FECHA
  41. --WHERE T1.ACCOUNTNO = '001-0001'

Reitero el agradecimiento por tu ayuda.

El tema se encuentra solucionado. Lo cerraré cuando lo notes conveniente.

Saludos.
__________________
:si: ANTARES:si: