
Obtener ventas en forma de matriz un renglón por articulo-meses
Publicado por maquino (3 intervenciones) el 19/03/2025 21:01:08
Agradezco la atención y la ayuda que me puedan dar. Tengo una tabla con las ventas por artículo acumuladas por mes, la fecha siempre tiene el día uno de cada mes. Quiero obtener una consulta en forma de matriz con la venta de los últimos n meses, es decir, un renglón por cada artículo y las ventas de los últimos 5 meses por ejemplo. Ya intenté con CTE para obtener una tabla temporal pero truena con error 500, son casi 800 mil registros. La que medio a funcionado es con subconsulta en FROM. Pero da tantos renglones como meses diferentes tenga y yo lo quiero todo en un solo renglón para poder calcular el promedio de todos lo meses y no de cada renglón. Anexo un muestra de la tabla con datos para que la pueden crear. Esta es la consulta que estoy ejecutando:
Esto es lo que obtengo:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
SELECT codigo, mes_4, mes_3, mes_2, mes_1, mes, vta_promedio
FROM(
SELECT
e.item_code AS codigo,
SUM(if(e.fecha = '2024-11-01',e.canven,0)) AS mes_4,
SUM(if(e.fecha = '2024-12-01',e.canven,0)) AS mes_3,
SUM(if(e.fecha = '2025-01-01',e.canven,0)) AS mes_2,
SUM(if(e.fecha = '2025-02-01',e.canven,0)) AS mes_1,
SUM(if(e.fecha = '2025-03-01',e.canven,0)) AS mes,
if(e.fecha >= '2024-11-01' AND e.fecha <= '2025-02-01',SUM(e.canven)/4,0) AS vta_promedio
FROM tabdarsumm e
WHERE
e.empresa = 'Adelar' AND e.sucursal LIKE '01%' AND
e.fecha >= DATE_SUB('2025-03-01', INTERVAL 4 MONTH) AND e.fecha <= '2025-03-01'
GROUP BY
e.`item_code`, e.fecha
ORDER BY
e.`item_code`
) as venta_promedio
ORDER BY `venta_promedio`.`vta_promedio` DESC;
Esto es lo que obtengo:

Valora esta pregunta


0