Hola Chicos cómo esta?
Estoy realizando algunas consultas la cual me muestra total de ventas de la tabla FACTURA_VENTAS por mes la cual no tengo ningún problema sin embargo me solicitaron que mostrara un campo la cual muestre el crecimiento tanto en monto como en porcentaje.
Mi duda es cual sería la mejor manera aprovechando el procedimiento almacenado de total de ventas por mes para traer información cómo por ejemplo:
Código:
se obtiene de: (MAC - MA) (MC / M) * 100
MES MONTO MONTO_CRECIMIENTO CRECIMIENTO_PORC
ENERO 27457.00 27457.00 100%
FEBRERO 28987.57 1500.57 5.18%
MARZO 30211.21 1223.67 4.05%
MAC= MES ACTUAL
MA= MES ANTERIOR
MC= MONTO CRECIMIENTO
M= MONTO
¿Será posible efectuar este tipo de Artimetica en Firebird o recomiendan alguna otra solución?
Aquí muestro parte de mi procedimiento
Código SQL
[-]
CREATE PROCEDURE VENTAS_CRECE_POR_MESCONTADO(
ANIO SMALLINT)
RETURNS(
NOMBREMES VARCHAR(25),
MONTO_VENTAS TYPE OF COLUMN FACTURAS_VENTAS.MONTOTOTAL,
CRECIMIENTO NUMERIC(12, 2))
AS
DECLARE VARIABLE LNI SMALLINT;
DECLARE VARIABLE MONTO_TOTALNC NUMERIC(12, 2);
DECLARE VARIABLE MONTO_CRECIMIENTO NUMERIC(12, 2);
BEGIN
MONTO_CRECIMIENTO = 0;
CRECIMIENTO = 0;
lnI = 1;
WHILE (lnI <= 12) DO
BEGIN
NOMBREMES = DECODE(lnI, 1, 'ENE', 2, 'FEB', 3, 'MAR', 4, 'ABR', 5, 'MAY', 6, 'JUN',
7, 'JUL', 8, 'AGO', 9, 'SEP', 10, 'OCT', 11, 'NOV', 12, 'DIC');
MONTO_VENTAS = (SELECT
SUM(FACTURAS_VENTAS.MONTOTOTAL)
FROM FACTURAS_VENTAS
WHERE EXTRACT(MONTH FROM FACTURAS_VENTAS.FECHA) = :lnI AND
EXTRACT(YEAR FROM FACTURAS_VENTAS.FECHA) = :ANIO);
MONTO_TOTALNC = (select coalesce(SUM(NOTAS_CREDITOS.IMPORTE_TOTAL), 0)
FROM NOTAS_CREDITOS
Where EXTRACT(MONTH FROM NOTAS_CREDITOS.FECHA_ACTUAL) = :lnI AND
EXTRACT(YEAR FROM NOTAS_CREDITOS.FECHA_ACTUAL) = :ANIO);
MONTO_VENTAS = COALESCE(MONTO_VENTAS, 0.00);
MONTO_VENTAS = (MONTO_VENTAS - COALESCE(MONTO_TOTALNC, 0.00));
SUSPEND;
lnI = lnI + 1;
END
END;
Saludos;
novatoerick.