Ver Mensaje Individual
  #7 (permalink)  
Antiguo 14/08/2013, 09:03
1antares1
 
Fecha de Ingreso: marzo-2006
Mensajes: 43
Antigüedad: 18 años, 8 meses
Puntos: 0
Pregunta Respuesta: Problemas con un Extracto: DEBE, HABER y SALDO

Buen día; Amigo Libras nuevamente....

Te comento que a la final y notada más simplificada fue la adjuntada a continuación:

Código MySQL:
Ver original
  1. CONTADOR INT,
  2. FECHA SMALLDATETIME,
  3. CUENTA VARCHAR(15),
  4. COMENTARIO NVARCHAR (300),
  5. DEBE DECIMAL(15,2),
  6. HABER DECIMAL(15,2)
  7. )
  8.  
  9. SELECT (ROW_NUMBER() OVER(ORDER BY (T1_1.CUENTA) ASC)) AS CONTADOR, FECHA, T1_1.CUENTA, T1_1.COMENTARIO, T1_1.DEBE, T1_1.HABER
  10. FROM DIARIOAPUNTES T1_1
  11.  
  12. SELECT 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
  13. FROM @T T1
  14.       CROSS APPLY(
  15.             SELECT ROUND(SUM(DEBE)-SUM(HABER),2) AS SALDO
  16.             FROM @T T2
  17.             WHERE T2.CONTADOR < T1.CONTADOR AND T1.CUENTA = T2.CUENTA
  18.       ) AS T2
  19.       ORDER BY T1.CUENTA, T1.FECHA

Por supuesto, me lanza 157 mil filas en 2 horas. Diría que aún es mucho tiempo, pero es lo más optimizado que he conseguido.

Ahora, lo que si me está aún complicando y estoy intentando realizar la simulación a una aplicación contable, es realizar mediante SQL, una fila final de cada cuenta con el total de la apertura, Debe, Haber y Saldo con su respectiva fórmula. No sé si en este caso podrías intentar darme algunos consejos o empujones de ideas.... Casi seguro esto tiende a ser más tipo programación, siendo un poco complicado en Base de Datos, pero soy del que intenta encontrar el jugo completo de una herramienta, y en caso de tener que usar alternativas, se usan. Pero nada mejor que realizarlo mediante SQL y usando Reporting Services para solo su interfaz y manejo de parámetros.

Te comento lo que intento conseguir, que de verdad es bastante complicado:



Estoy buscando la manera de controlarlo por un ROW_NUMBER/PARTITION a nivel de cuenta, y la misma, validarla para realizar la respectiva fórmula y crear una línea final en todos los resultados.

Por qué no todas las fórmulas en las cuentas sobre la suma y resta es semejante. Diría que las cuentas iniciales en 1xxxx es igual a las de las 5 en adelante. Y las 2,3,4 otra fórmula.

La idea que intento encontrar es particionarlo por un contador y poder intentar crear una línea final luego de su culminación de registros.

Cualquier cosa que consiga, lo publicaré. Si consigues algo antes, estaría bastante agradecido.

Sin más que agregar;

Cordial saludo.
__________________
:si: ANTARES:si: