¿Me gustaría ir acumulando la Columna Suma en cada linea como puedo hacer esto? Ejemplo: Cliente Venta Porc.% Suma% 01 1,500 1.5% 1.5% 02 3,500 2% 3.5% 10 5,500 4.5% 8%
Para poder hacer lo que solicitas debes que hacer lo siguiente: 1. Tienes tu tabla sin la columna suma% 2. Declara una variable table con la estructura que propones inlcuyendo la columna que acumula suma% 3. Crea un cursor que lea registro por registro y debes tener una variable que acumule e inserte en la variable table 4. Una vez que recorras toda tu tabla origen y la insertes en la variable table tendrás tu dato acumulado por columna, no es difícil hacerlo, ahorita no tengo el sql porque estoy desde mi cel pero si tienes alguna duda puedes hacerme las consultas y te podre orientar.
Gracias por tu respuesta, Me gustaría explicarte el problema desde el origen pues así creo que me darás una mejor solución. Actualmente tengo un procedimiento almacenado que me trae las ventas por clientes por vendedor dentro de un rango de fechas, las fechas son pasadas al procedimiento por los parámetros... fecha_inicio, Fecha_fin. Con el resultado de este procedimiento construir in informe en Crystal Report, el cual lo tengo agrupado por Vendedor, Cliente, Factura. En el grupo Cliente me trae la sumatoria de sus detalles en orden descendente, también le agregue la sumatoria de sus detalles pero en porcentajes. Ahora la gerencia de ventas una columna que vaya sumando los porcentajes por clientes con el objetivo de saber con cuantos clientes el vendedor logra el 80% de sus ventas. Ejemplo: El reporte devuelve lo siguiente: Vendedor Cliente Venta % %Acumulado Grupo Vendedor: Vendedor 01-Carlos Rodriguez Grupo Cliente: Hospital Dr. Dario Contrerras 25,10050.09% 50.09% NivelDetalle: Factura01 100 Factura02 5,000 Factura03 10,000 Factura04 4,000 Factura05 6,000 :Hospital Plaza de la Salud 15,00029.94% 80.03% Factura06 4,000 Factura07 10,000 Factura08 1,000 Factura09 21,000 :Hospital Luis Aybar 10,00019.96.% 100% Factura10 5,000 Factura11 5,000 SUBTOTAL X VENDEDEDOR ==> 55,100 Los valores subrayados los genera el reporte automáticamente con la opción summary... el valor que necesito acumular es %Acumulado. Gracias, Muchas Gracias por tu ayuda.
Disculpa la demora, he estado ocupado, cuéntame si ya pudiste resolver el problema para intentar una solución en base a lo que enviaste.
Realmente me gustaría crear una consulta de la tabla FACTURA. En la tabla factura tengo los siguientes campos: factura.factura,factura.cliente,factura.vendedor,factura.fecha,factura.total_mercaderia me gustaria agrupar las ventas por cliente ejemplo select factura.vendedor,factura.cliente, sum(total_mercaderia) as total from factura where factura.fecha between '2008-06-01' and '2008-06-30' group by factura.vendedor,factura.cliente esto me devolveria lo siguiente: Vendedor CLiente Venta % %Acumulado P01 C0001 27,000 P01 C0002 50,000 P01 C0002 25,000 Los campo % y %Acumulado son los campos que me gustaría calcular Gracias,
Bueno me tome un tiempo para ayudarte con tu qry, en el código que esta abajo, asume que la variable tabla que he creado es el resultado de tu query luego de hacer el group by, y luego los resultados lo inserto en otra variable tabla llamada @factura_resultado, cópialo y pégalo y veras que cumple lo que solicitas, espero te sirva: declare @factura table (vendedor char(3), cliente char(4), venta int) declare @factura_resultado table (vendedor char(3), cliente char(4), venta int, porcentaje decimal(18,4), acumulado decimal(18,4)) insert into @factura values ('P01', 'C001', 10) insert into @factura values ('P01', 'C002', 20) insert into @factura values ('P01', 'C003', 30) insert into @factura values ('P01', 'C004', 40) declare @total decimal(18,4), @acumulado decimal(18,4) set @acumulado= 0 select @total= sum(venta) FROM @factura declare @vendedor char(3), @cliente char(4), @venta int DECLARE RS_VAR CURSOR FOR select vendedor, cliente, venta from @factura OPEN RS_VAR FETCH NEXT FROM RS_VAR INTO @vendedor, @cliente, @venta --set @acumulado= @acumulado WHILE @@FETCH_STATUS=0 BEGIN insert into @factura_resultado values(@vendedor, @cliente, @venta, (@venta/@total)*100.0, (@venta/@total)*100.0+ @acumulado) set @acumulado= @acumulado+ @venta/@total*100.0 FETCH NEXT FROM RS_VAR INTO @vendedor, @cliente, @venta END CLOSE RS_VAR DEALLOCATE RS_VAR select * from @factura_resultado