manejo de fetch

27/02/2006 - 22:04 por Miguel Arias | Informe spam
Buenas tardes a tod@s:

la cuestion es la siguiente:
tengo una tlb movimientos y otra saldos
en la tabla movimientos tengo la siguiente inf.
cuenta monto
1 1
1 1
2 1
2 2
3 3
3 3

en la tabla saldos después de ejecutar el siguiente código tiene que quedar
así:
cuenta monto
1 2 --el valor total de los montos de las cuentas 1
2 3 --el valor total de los montos de las cuentas 2
3 6 --el valor total de los montos de las cuentas 3
etc...

pero cuando ejecuto el código anexo queda así:
cuenta monto
1 7
2 6
3 6

este es el código que ejecuto, les agradezco que me puedan ayudar a
encontrar el error.
de antemano muchas gracias.


DECLARE @CUENTA INT
DECLARE @MONTO INT

DECLARE TEST_CURSOR CURSOR FOR
SELECT CUENTA, MONTO FROM MOVIMIENTOS



OPEN TEST_CURSOR
FETCH NEXT FROM TEST_CURSOR
INTO @CUENTA, @MONTO
WHILE @@fetch_status = 0



BEGIN
IF EXISTS(SELECT CUENTA FROM SALDOS WHERE CUENTA = @CUENTA)
UPDATE SALDOS
SET MONTO = MONTO + @MONTO
ELSE
INSERT INTO SALDOS VALUES (@CUENTA,@MONTO)
FETCH NEXT FROM TEST_CURSOR
INTO @CUENTA, @MONTO
END
CLOSE TEST_CURSOR
DEALLOCATE TEST_CURSOR



MIGUEL F. ARIAS PERDOMO

mfariasp@alfcom.com
 

Leer las respuestas

#1 Isaias
27/02/2006 - 22:36 | Informe spam
Miguel

Si lo que quieres es hacer una sumatoria, porque no hacerlo de forma directa.

SELECT Cuenta, SUM(Monto) FROM Tutabla GROUP BY cuenta


Saludos
IIslas


"Miguel Arias" escribió:

Buenas tardes a :

la cuestion es la siguiente:
tengo una tlb movimientos y otra saldos
en la tabla movimientos tengo la siguiente inf.
cuenta monto
1 1
1 1
2 1
2 2
3 3
3 3

en la tabla saldos después de ejecutar el siguiente código tiene que quedar
así:
cuenta monto
1 2 --el valor total de los montos de las cuentas 1
2 3 --el valor total de los montos de las cuentas 2
3 6 --el valor total de los montos de las cuentas 3
etc...

pero cuando ejecuto el código anexo queda así:
cuenta monto
1 7
2 6
3 6

este es el código que ejecuto, les agradezco que me puedan ayudar a
encontrar el error.
de antemano muchas gracias.


DECLARE @CUENTA INT
DECLARE @MONTO INT

DECLARE TEST_CURSOR CURSOR FOR
SELECT CUENTA, MONTO FROM MOVIMIENTOS



OPEN TEST_CURSOR
FETCH NEXT FROM TEST_CURSOR
INTO @CUENTA, @MONTO
WHILE @@fetch_status = 0



BEGIN
IF EXISTS(SELECT CUENTA FROM SALDOS WHERE CUENTA = @CUENTA)
UPDATE SALDOS
SET MONTO = MONTO + @MONTO
ELSE
INSERT INTO SALDOS VALUES (@CUENTA,@MONTO)
FETCH NEXT FROM TEST_CURSOR
INTO @CUENTA, @MONTO
END
CLOSE TEST_CURSOR
DEALLOCATE TEST_CURSOR



MIGUEL F. ARIAS PERDOMO








Preguntas similares