2016-02-24

Total acumulado de una columna en función de otra en Access

Title

Problema

Queremos crear un total acumulado de una columna en función de otra. En nuestro ejemplo calcularemos un total acumulado de los precios en función de categoría. Es decir empezará a sumar desde cero al cambiar de categoría. Por tanto el total al iniciar la categoría es igual al precio de esa fila.

Solución

Empleamos una consulta que incluye una subconsulta.

SELECT T1.IdCategoría, 
 T1.NombreProducto, 
 T1.IdProducto, 
 T1.PrecioUnidad, 
 (SELECT Sum(T2.PrecioUnidad) 
  FROM Productos AS T2
  WHERE  T2.IdCategoría = T1.IdCategoría 
  AND T2.IdProducto <= T1.IdProducto) 
  AS Total_Categoría
 FROM Productos AS T1 

Resultado

El resultado saldrá desordenado.

Será necesario ordenar el resultado de la consulta primero por el Total_Categoría y luego por Categoría. Otra opción es utilizar el siguiente código.

SELECT *
FROM (SELECT T1.IdCategoría, 
T1.NombreProducto, 
T1.IdProducto, 
T1.PrecioUnidad, 
(SELECT Sum(Productos.PrecioUnidad) AS Total   
FROM Productos   
WHERE  Productos.IdCategoría = T1.IdCategoría 
 AND Productos.IdProducto <= T1.IdProducto ) AS Total 
FROM Productos AS T1) AS T2
ORDER BY T2.IdCategoría, Total;

No hay comentarios:

Publicar un comentario

Nube de datos