Les comento quien pueda aportar alguna sugerencia o ayuda breve a lo sucedido.
Para ser breve, a la hora de intentar realizar un Extracto contable con el DEBE y HABER, en SALDO contínuo.
Realmente quedé colgado en mi Consulta, y no consigo alguna solución posible para encontrar lo deseado.
Agradecido estaría de alguna pequeña colaboración por algunos de ustedes.
Estoy buscando algo así:
Código SQL:
Realmente no requiero filtrarlo por tipo de cuenta esta vez, sino específicas.Ver original
FECHA CUENTA DEBE HABER SALDO 2013-01-01 00:00:00 11200 0.00 1500.00 -1500.00 2013-01-01 00:00:00 11200 0.00 60.00 -1560.00 2013-01-01 00:00:00 11200 0.00 400.00 -1960.00 2013-01-01 00:00:00 11200 0.00 100.00 -2060.00 2013-01-01 00:00:00 11200 0.00 300.00 -2360.00 2013-01-01 00:00:00 11200 0.00 250.00 -2910.00
La idea es que con mi Query aún no me da dicho resultado.
Pueden comprarlo creando una tabla provisional o temporal, con el mismo mostrado a continuación:
Código SQL:
Ver original
INSERT INTO Accounting (AccDate,DebitCredit,Account,Amount) VALUES ('20110101','D',11200,1500) INSERT INTO Accounting (AccDate,DebitCredit,Account,Amount) VALUES ('20110101','C',11200,60) INSERT INTO Accounting (AccDate,DebitCredit,Account,Amount) VALUES ('20110102','D',11200,400) INSERT INTO Accounting (AccDate,DebitCredit,Account,Amount) VALUES ('20110102','C',11200,100) INSERT INTO Accounting (AccDate,DebitCredit,Account,Amount) VALUES ('20110102','C',11200,300) INSERT INTO Accounting (AccDate,DebitCredit,Account,Amount) VALUES ('20110102','C',11200,250) WITH CTE_FIRST AS ( SELECT ACCDATE, ACCOUNT, CASE WHEN DEBITCREDIT='D' THEN AMOUNT ELSE 0 END AS DEBIT, CASE WHEN DEBITCREDIT='C' THEN AMOUNT ELSE 0 END AS CREDIT, ROW_NUMBER()OVER(ORDER BY ACCOUNT,ACCDATE) RN FROM ACCOUNTING WHERE ACCDATE >='20130101' ) ,CTE_SECOND AS( SELECT *, ISNULL((SELECT TOP 1 DEBIT FROM CTE_FIRST B WHERE B.ACCOUNT=A.ACCOUNT AND B.RN<A.RN ORDER BY RN DESC),0) COL1, ISNULL((SELECT TOP 1 CREDIT FROM CTE_FIRST B WHERE B.ACCOUNT=A.ACCOUNT AND B.RN<A.RN ORDER BY RN DESC),0) COL2 FROM CTE_FIRST A ) SELECT ACCDATE,ACCOUNT,DEBIT,CREDIT, CASE WHEN DEBIT=0 THEN 0-(CREDIT+COL2) ELSE DEBIT+COL1 END BALANCE FROM CTE_SECOND
Algo me ocurre en la validación de suma o no me está tomando consultando de forma líneal....
Toda esta consulta, intenté ayudarme con material que conseguí en la web. Pero no me da la respuesta total.
Si además existe otra mejor manera, no habría problema.
Gracias por su atención.
Saludos.