Actualizacion recursiva porfis

27/08/2005 - 01:38 por jesus | Informe spam
Buenas, un favor, no puedo con este problema, espero me puedan ayudar, tengo
una tabla digamos asi

cta desc saldoInicial debe Haber
Saldo Final
12 Caja y banco
121 Caja Menor
1211 Administracion 120 10 5
115
1212 Produccion 20 20 25
25
122 Caja Principal
1221 Gerencia 20 10 10
10
Esta tabla ya la tengo hecha, por eso necesito actualizar hacia arriba los
montos,
queria hacerlo con un bucle pero el ultimo nivel donde se registran los
datos, no es
fijo, puede ser un numero a nivel mas profundo.


y quiero obtener
cta desc saldoInicial debe Haber
Saldo Final
12 Caja y banco 160 40 40
160
121 Caja Menor 140 30 30
140
1211 Administracion 120 10 5
115
1212 Produccion 20 20 25
25
122 Caja Principal 20 10 10
20
1221 Gerencia 20 10 10
20

Espero me puedan ayudar, darme ideas o como puedo hacer un update para
realizarlo
o la mejor opcion que se pueda, mil gracias.

Preguntas similare

Leer las respuestas

#1 Alejandro Mesa
27/08/2005 - 14:57 | Informe spam
Jesus,

Se deberia hacer un estudio sobre la forma en que se debe representar esta
herarquia. Por ahora solo se me ocurre usar un path o camino para indicar
como llegar a la cuenta y no te puedo asegurar que sea la forma optima de
hacerlo. En los dos primeros links adjuntados, vas ha encontrar una manera de
mantener el path usando triggers.

create table t1 (
cta varchar(10) primary key,
cta_desc varchar(25),
saldo_inicial numeric(10, 2),
debe numeric(10, 2),
haber numeric(10, 2),
saldo_final numeric(10, 2),
path varchar(1000)
)
go

insert into t1 values('12', 'Caja y banco', null, null, null, null, '.12.')
insert into t1 values('121', 'Caja Menor', null, null, null, null, '.12.121.')
insert into t1 values('1211', 'Administracion', 120, 10, 5, 115,
'.12.121.1211.')
insert into t1 values('1212', 'Produccion', 20, 20, 25, 25, '.12.121.1212.')
insert into t1 values('122', 'Caja Principal', null, null, null, null,
'.12.122.')
insert into t1 values('1221', 'Gerencia', 20, 10, 10, 20, '.12.122.1221.')
go

select
a.cta,
a.cta_desc,
sum(b.saldo_inicial) as saldo_inicial,
sum(b.debe) as debe,
sum(b.haber) as haber,
sum(b.saldo_final) as saldo_final
from
t1 as a
left join
t1 as b
on b.path like '%.' + a.cta + '.%'
group by
a.cta,
a.cta_desc
order by
max(a.path)
go

drop table t1
go

Maintaining Hierarchies
http://www.windowsitpro.com/Article....html?Ad=1

Manipulating Hierarchies with UDFs
http://www.windowsitpro.com/Article...?ArticleID123&DisplayTab=Article

Trees in SQL: Nested Sets and Materialized Path
http://www.dbazine.com/oracle/or-ar...tropashko4

Joe Celko's Trees and Hierarchies in SQL for Smarties
http://www.amazon.com/exec/obidos/t...609202/qid25147031/sr=2-2/ref=pd_bbs_b_2_2/102-5159492-8378548?v=glance&s=books


AMB

"jesus" wrote:

Buenas, un favor, no puedo con este problema, espero me puedan ayudar, tengo
una tabla digamos asi

cta desc saldoInicial debe Haber
Saldo Final
12 Caja y banco
121 Caja Menor
1211 Administracion 120 10 5
115
1212 Produccion 20 20 25
25
122 Caja Principal
1221 Gerencia 20 10 10
10
Esta tabla ya la tengo hecha, por eso necesito actualizar hacia arriba los
montos,
queria hacerlo con un bucle pero el ultimo nivel donde se registran los
datos, no es
fijo, puede ser un numero a nivel mas profundo.


y quiero obtener
cta desc saldoInicial debe Haber
Saldo Final
12 Caja y banco 160 40 40
160
121 Caja Menor 140 30 30
140
1211 Administracion 120 10 5
115
1212 Produccion 20 20 25
25
122 Caja Principal 20 10 10
20
1221 Gerencia 20 10 10
20

Espero me puedan ayudar, darme ideas o como puedo hacer un update para
realizarlo
o la mejor opcion que se pueda, mil gracias.



Respuesta Responder a este mensaje
#2 jesus
31/08/2005 - 17:43 | Informe spam
OKe, muchas gracias por la informacion, ya lo aplique y segun las pruebas
esta acumulando correctamente, gracias por la ayuda
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida