Saludos amigos.
Pues estoy tratando de cambiar mi forma de programar con cursores.
Tengo un ejemplo que no encuentro como resolverlo, espero alguien me pueda
auxiliar.
El escenario es el siguiente, tengo una tabla con una clave de cliente,
nombres, y total de ventas.
obtengo el valor del total de las ventas y obtengo el total del 80% y del 20%
Los clientes cuyas ventas representen el 80% del total del ingreso son "a" y
los que representan el 20% son "B"
Yo con un cursor ordeno descendentemente por el campo de totalventas, y así
recorro cliente por cliente y voy sumando desde el que mas vende hasta el que
menos y voy poniendoles "A" hasdta completar el 80%, luego la comparación del
ultimo 20 % s eles pone "b"
y mi cursor queda así:
select @total = sum(mesactualacumulado) from Rpt600AB
set @a = @total * .8
set @b = @total * .2
set @total = 0
DECLARE CurAB CURSOR FORWARD_ONLY FOR
select ruta, nud, mesactualacumulado from Rpt600AB order by
mesactualacumulado desc, vtamesAnt1 desc, vtamesAnt2
open CurAB
FETCH NEXT FROM CurAB INTO @ruta, @nud,@mesactualacumulado
WHILE @@FETCH_STATUS = 0
BEGIN
set @total = @total + @mesactualacumulado
if @total <= @a
begin
update Rpt600AB set tipocliente = '80' where nud =
@nud and ruta = @ruta and mesactualacumulado = @mesactualacumulado
end
else
if (@total <= (@a + @b)) and (@total > @a)
begin
update Rpt600AB set tipocliente = '20' where
nud = @nud and ruta = @ruta and mesactualacumulado = @mesactualacumulado
end
FETCH NEXT FROM CurAB INTO @ruta,
@nud,@mesactualacumulado
END
CLOSE CurAB
DEALLOCATE CurAB
existe alguna manera de no hacerlo por cursor?..
Gracias.
Miguel Angel Juárez Herrera.
Programador (NET, VB6 y SQL 2000).
Sistemas GEUSA
Leer las respuestas