Estimados, necesitamos crear un reporte, el cual indique el 80% de los productos con mayor venta, vale decir basado en el principio de Pareto.
Lo que he hecho es desde la tabla INV1 seleccionar el codigo del producto y el precio por linea con esto tengo el monto total vendido de un producto y lo he ordenado de forma descendente. El tema que al momento de quere sacar el porcentaje no he podido obtener el resultado, ya que del monto total de un producto debo sacar el porcentaje del total de la venta e ir sumando el valor para llegar al 80%. Intente con OVER PARTITION, pero al momento de manejar los porcentajes tengo el problema.
Adjunto parte del código.
1 me gusta
coloca tu query para revisarlo, generalmente el manejo de acumulados, es mas parte del diseño del reporte, como un crystal por ejemplo, pero si la necesidad es hacer en el query, podrias usar un Store procedure, y usar un cursor para ir acumulando una variable talvez.
Saludos,
Omitiendo el OVER PARTITION, tengo lo requerido, pero me falta la columna que sume hasta llegar al 80%
SELECT T1."ItemCode", SUM(T1."LineTotal") AS "Total" , SUM(T1."LineTotal"), SUM(T1."LineTotal") * 100/ (SELECT SUM(T0."LineTotal") FROM INV1 T0 Where T0."ItemCode" IS NOT NULL) AS "%"
FROM OINV T0 INNER JOIN INV1 T1 ON T0."DocEntry" = T1."DocEntry"
WHERE T0."DocDate" >= '20160101'
Group By T1."ItemCode"
Order By "Total" DESC
1 me gusta
Suena más a 2 cosas:
o lo haces en Crystal Report con agrupaciones y vas haciendo el acumulado, o lo haces en un Store Procedure con un cursor, y ese SP lo puedes llamar del query manager en SAP (si lo necesitas en un Query). Pero así directo no podrías.