SQL - uso de variables

   
Vista:

uso de variables

Publicado por veronica (9 intervenciones) el 04/09/2008 23:12:49
Hola soy principiante en esto del sql y tengo un pequeño problema

Tengo 4 columnas


Saldo--------1 -------- 2 ------- total <--- nombre de columnas

a-------------b----------c------------x (a-d+c=x) <---resultado de registros
a-------------b----------c------------y (x-d+c=y) <---resultado de registros
a-------------b----------c------------z (y-d+c=z) <---resultado de registros

como podrás observar en la columna total se va cambiando el valor de la operación anterior..

me dijeron que eso lo puedo hacer con un cursor pero la verdad no se como. Actualmente me estoy documentando sobre los cursores.. pero no la veo llegar
agradeceria muchisimo tu ayuda..
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:uso de variables

Publicado por Jorge Morales (25 intervenciones) el 04/09/2008 23:45:43
Saludos Veronica, te diría la solucion utilizando cursores, pero, creo que, a fin de cuentas utilizarías un Update como a continuación:

Update TuTabla
Set Total = Saldo + Campo1 + Campo2

te recomiendo que no nombres a tus campos como un numero (1 y 2) por que puede que tengas problemas para este tipo de operaciones.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:uso de variables

Publicado por veronica (9 intervenciones) el 05/09/2008 00:04:36
gracias por contestarme...
la verdad es que no se llaman asi es solo para hacer mas sencilla mi explicacion,
pero me quedo una duda como hago para que en mi segundo registro
tomo el resultado del total ?

Set TOTAL = Saldo + Campo1 + Campo2
TOTAL+campo1+campo2
en mi segundo registro el total del a primera operacion hacen mi segundo resultado y asi sucesivamente con mi tercer registro.....
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:uso de variables

Publicado por Jorge Morales (25 intervenciones) el 05/09/2008 00:12:43
Saludos nuevamente Veronica, mil disculpas por mi respuesta anterior no leí bien tu mensaje.

Con cursores quedaría mas o menos así:

--Declaracion de Variables
DECLARE @Consec integer, @saldo float, @Campo1 Float, @Campo2 Float,
@Total float
--Inicializacion de variable @Total
Set @Total = 0

----Declaracion del cursor haciendo referencia a los campos de TuTabla ordenados por una Llave
DECLARE Actualizacion_Total CURSOR FOR
SELECT UnaLlave, Saldo, Campo1, Campo2
FROM TuTabla
ORDER BY UnaLlave

-----Abrimos el Cursor
OPEN Actualizacion_Total

-----Vaciamos el contenido del siguiente registro (el primero) del cursor en nuestras variables
FETCH NEXT FROM Actualizacion_Total
INTO @Consec, @saldo, @Campo1, @Campo2

-----Mientras no se llegue al final del cursor ----------------
WHILE @@FETCH_STATUS = 0
BEGIN
-------------Sumamos el contenido de las variables junto con
-------------la variable @Total para acumular el resultado
Set @Total = @Total + @Saldo + @Campo1 + @Campo2

-------------Actualizamos el total del registro Actual (@Consec) con el
-------------resultado de la variable @Total
Update TuTabla
Set Total = @Total
Where UnaLlave = @Consec

-----Vaciamos el contenido del siguiente registro del cursor
-----en nuestras variables
FETCH NEXT FROM Actualizacion_Total
INTO @Consec, @saldo, @Campo1, @Campo2
END

----------Cerramos el cursor---------
CLOSE Actualizacion_Total
----------Eliminamos el cursor---------
DEALLOCATE Actualizacion_Total

procura que el campo UnaLlave sea de preferencia un consecutivo que se asigne conforme se agregan registros, cabe aclarar que este ejemplo sirve para MSSQLServer, avisanos si utilizas otro motor.

Quizas la interpretacion de cada linea no sea la decuada, pero espero que te sea de ayuda.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:uso de variables

Publicado por Jorge Morales (25 intervenciones) el 05/09/2008 00:27:27
Otra posible solucion, mucho mas rapida y simple sería con una actualizacion como la siguiente:

update Tutabla
set Total = (select sum(Campo1 + Campo2 + Saldo) from Tabla t where t.consec <= Tabla.Consec)

eso sí cuida no tener nulos en los campos que haces las operaciones.

Saludos

PD. Para la solucion que te dí con cursores omite utilizar el campo saldo :P
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:uso de variables

Publicado por veronica (9 intervenciones) el 05/09/2008 01:20:33
gracias!!!! lo voy a probar....
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar