Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   acumular saldos segun quiebre de cuenta (https://www.clubdelphi.com/foros/showthread.php?t=73080)

oscarac 30-03-2011 18:17:01

acumular saldos segun quiebre de cuenta
 
quiza el titulo no ayude mucho pero me gustaria tener ideas de como hacer esto.... (en SQL SERVER y en ACCESS si es que se puede)

datos....
Cita:

Cuenta........ Tipo Importe
101010........ D......100.00
101010........ D......100.00
101020........ H......100.00
101020........ D......100.00
101030........ D......100.00
101040........ H......100.00
121010........ D......100.00
121015........ D......100.00
121220........ D......100.00
quisiera un resultado asi (las subdivisionarias pueden variar)

Cita:

Cuenta...............Tipo D.... TIPO H
10.....................400.00....200.00
1010..................400.00....200.00
101010...............200.00.......0.00
101020...............100.00.....100.00
101030...............100.00......0.00
101040..................0.00.....100.00
12......................300.00.......0.00
1210...................200.00.....0.00
121010................100.00.....0.00
121015................100.00.....0.00
1212....................100.00...0.00
121220................100.00....0.00

espero se entienda..... son saldos acumulados y que se acumulan de acuerdo al prefijo de la cuenta (que puede tener niveles variables ejemplo.. 2,3,6 o 2,4,5 o 2,6)

gatosoft 30-03-2011 18:31:37

Se me ocurre algo como:

Código SQL [-]
select grupo Elgrupo, sum(valordebito) Elvalordebito, sum(valorcredito) Elvalorcredito
from (
Select substr(cuenta,1,1) grupo, cuenta, valordebito, valorcredito
from detallemovimientos
union all
Select substr(cuenta,1,2) grupo, cuenta, valordebito, valorcredito
from detallemovimientos
union all
Select substr(cuenta,1,4) grupo, cuenta, valordebito, valorcredito
from detallemovimientos
union all
Select substr(cuenta,1,6) grupo, cuenta, valordebito, valorcredito
from detallemovimientos
) LosMovimeintos
group by elgrupo
order by Elgrupo

No estoy seguro de la sintaxis del Substr...(o SubString?)... y no tengo datos para probar... asi que me cuentas si te sirve

oscarac 30-03-2011 18:54:36

Lo he solucionado momentaneamente asi

Código SQL [-]
 
select Left(Cuenta,2), sum(iif (DH='D', n_imp, 0)) AS Debe, sum(iif (DH='H', n_imp, 0)) AS Haber
from tblmovimientocontable where Periodo = '201001'
group by Left(cuenta,2)
Order by Left(cuenta,2)
union all
select Left(Cuenta,3), sum(iif (DH='D', n_imp, 0)) AS Debe, sum(iif (DH='H', n_imp, 0)) AS Haber
from tblmovimientocontable where Periodo = '201001'
group by Left(cuenta,3)
Union all 
select Left(Cuenta,4), sum(iif (DH='D', n_imp, 0)) AS Debe, sum(iif (DH='H', n_imp, 0)) AS Haber
from tblmovimientocontable where Periodo = '201001'
group by Left(cuenta,4)
Union all
select Cuenta, sum(iif (DH='D', n_imp, 0)) AS Debe, sum(iif (DH='H', n_imp, 0)) AS Haber
from tblmovimientocontable where Periodo = '201001'
group by cuenta

el problema es que los quiebres.... (2,3,4,..) son variables....
entonces....
se me ocurre que podria armar una cadena....


La franja horaria es GMT +2. Ahora son las 20:43:59.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi