Ayuda ! Instrucción de actualización

21/11/2008 - 00:01 por DiegoRomero | Informe spam
Hola

A ver si me pueden dar una luz con lo siguiente:

la tabla Acumulados tiene los campos Cuenta,Mes,
SaldoInicial,Debitos,Credito
La llave primaria es Cuenta y Mes

Los registros se agregan cada mes calculando de otra tabla de
movimientos.

Lo que no he podido realizar es la actualización del SaldoInicial, que
viene del mes anterior como (saldoinicial+debitos-creditos).

¿Como hago una instrucción INSERT INTO ... donde agregue los registros
del mes anterior, si no existen en el actual, o actualice el campo
SaldoInicial si ya existe el registro en el mes actual. ?

ejemplo:
Cuenta , mes,saldoinicial,debito,credito
1105 1 0 500000 0
1105 2 0 0 400000
1110 1 100000 0 50000
1305 1 0 1000000 100000
1305 2 0 500000 0
2205 1 0 0 1400000

En el caso de la cuenta 1105 y 1305 se debe actualizar el campo
SaldoInicial,
y en caso de 1110 y 2205 se debe agregar el registro para el mes 2

Espero me puedan ayudar.


Diego M Romero
 

Leer las respuestas

#1 Jose TH
21/11/2008 - 01:17 | Informe spam
Hola Diego

Aunque no indicaste el año, como alternativa a tener que actualizar
directamente esa tabla, creo que puedes mirar la opción de usar mejor una
vista indexada donde te queden ya resumidos los débitos y los créditos por
Cuenta, Año y Mes.
El balance inicial de cada Cuenta-Año-Mes lo puedes calcular con un SUM
sobre la vista indexada en una función de usuario a la que le mandes esos
parámetros o hacer una Vista Normal sobre la indexada que te de ese cálculo
y/o también utilice la función de balance inicial. Son apenas 12 registros
por cuenta por año por tanto no afecta mucho el performance el SUM para el
balance inicial.
Si es necesario agregar los meses faltantes (de las cuentas sin
transacciones en determinado mes), debes ampliar la definición de la vista
normal para que de sus parámetros (probablemente un rango arbitrario de
meses o de fechas) te incluya los registros de los meses faltantes ya sea
con una "Union all" o un "Cross Join" o cualquier otra técnica.
Sólo es una opción, ya te darán otras.

Jose TH


"DiegoRomero" escribió en el mensaje
news:
Hola

A ver si me pueden dar una luz con lo siguiente:

la tabla Acumulados tiene los campos Cuenta,Mes,
SaldoInicial,Debitos,Credito
La llave primaria es Cuenta y Mes

Los registros se agregan cada mes calculando de otra tabla de
movimientos.

Lo que no he podido realizar es la actualización del SaldoInicial, que
viene del mes anterior como (saldoinicial+debitos-creditos).

¿Como hago una instrucción INSERT INTO ... donde agregue los registros
del mes anterior, si no existen en el actual, o actualice el campo
SaldoInicial si ya existe el registro en el mes actual. ?

ejemplo:
Cuenta , mes,saldoinicial,debito,credito
1105 1 0 500000 0
1105 2 0 0 400000
1110 1 100000 0 50000
1305 1 0 1000000 100000
1305 2 0 500000 0
2205 1 0 0 1400000

En el caso de la cuenta 1105 y 1305 se debe actualizar el campo
SaldoInicial,
y en caso de 1110 y 2205 se debe agregar el registro para el mes 2

Espero me puedan ayudar.


Diego M Romero

Preguntas similares