NO USAR CURSOR SQL2000

04/07/2007 - 04:52 por Miguel Angel Juárez Herrera | Informe spam
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

Preguntas similare

Leer las respuestas

#6 Miguel Angel Juárez Herrera
05/07/2007 - 00:52 | Informe spam
Hola, mira lo que pasaría en ese caso es que por eso viene ordenado tambien
por el criterio de ventas de 2 meses antes y de 1 mes antes, así el que tiene
mas ventas en esos casos se tomaría para el caso de diferenciarlos contra lo
que en este mes llegan igual, por ejemplo llegé a ver que tenia muchisimos
casos con 11 mil pero si los ordenaba dscendentemente tambien por sus ventas
hace 2 meses y tambien por 1 mes antes ya encontraba el punto de equilibrio.
Miguel Angel Juárez Herrera.
Programador (NET, VB6 y SQL 2000).
Sistemas GEUSA



"Carlos M. Calvelo" wrote:

On 4 jul, 04:52, Miguel Angel Juárez Herrera
<mjuarezh36(antispam)@yahoo.com.mx> wrote:
> 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í:
>

Se puede hacer. Pero como a mi me gusta saber 'qué hacer'
antes de 'cómo hacerlo' :-) ... tengo una pregunta:

Si sumando.. sumando... se acaba el 80% del total y los clientes
siguientes tienen un total de ventas igual a los anteriores, con qué
criteria se determina cuales son tipo 'A' y cuales son tipo 'B'?
Un caso extremo: tenemos 10 registros todos con un total
de ventas de 10 euros. Cuales son del tip o 'A' y cuales son
del tipo 'B'?

Saludos,
Carlos


Respuesta Responder a este mensaje
#7 Carlos M. Calvelo
05/07/2007 - 01:17 | Informe spam
On 5 jul, 00:52, Miguel Angel Juárez Herrera
<mjuarezh36(antispam)@yahoo.com.mx> wrote:
Hola, mira lo que pasaría en ese caso es que por eso viene ordenado tambien
por el criterio de ventas de 2 meses antes y de 1 mes antes, así el que tiene
mas ventas en esos casos se tomaría para el caso de diferenciarlos contra lo
que en este mes llegan igual, por ejemplo llegé a ver que tenia muchisimos
casos con 11 mil pero si los ordenaba dscendentemente tambien por sus ventas
hace 2 meses y tambien por 1 mes antes ya encontraba el punto de equilibrio.



Hola Miguel,

Ah! Ok! Entonces de mi otro post puedes mirar si
te sirve la primera consulta como base para lo que tienes
que hacer.

Saludos,
Carlos
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida