Código:
DELIMITER $$
DROP PROCEDURE IF EXISTS `usp_Consolidado` $$
CREATE DEFINER=`tomza`@`%` PROCEDURE `usp_Consolidado`(
in pFechaFinal varchar(50)
)
BEGIN
DROP TABLE IF EXISTS Tmp;
CREATE TABLE Tmp
SELECT factura.fecha as fecha,personal.codigo as codigo, concat(personal.nombres, ' ', personal.apellidos) nombre,distribucion.nombre as distribucion,
if(articulo.codigo='2005', factura_detalle.cantidad,0) as CL05,
if(articulo.codigo='2010', factura_detalle.cantidad,0) as CL10,
if(articulo.codigo='2020', factura_detalle.cantidad,0) as CL20,
if(articulo.codigo='2025', factura_detalle.cantidad,0) as CL25,
if(articulo.codigo='2035', factura_detalle.cantidad,0) as CL35,
if(articulo.codigo='2040', factura_detalle.cantidad,0) as CL40,
if(articulo.codigo='2060', factura_detalle.cantidad,0) as CL60,
if(articulo.codigo='2100', factura_detalle.cantidad,0) as CL100,
if(articulo.codigo='2005' or articulo.codigo='2010' or articulo.codigo='2020' or articulo.codigo='2025'
or articulo.codigo='2035' or articulo.codigo='2040' or articulo.codigo='2060' or articulo.codigo='2100',factura_detalle.cantidad,0) as cilingaldros,
if(articulo.codigo='2005' or articulo.codigo='2010' or articulo.codigo='2020' or articulo.codigo='2025'
or articulo.codigo='2035' or articulo.codigo='2040' or articulo.codigo='2060' or articulo.codigo='2100',factura_detalle.galones,0) as equival_galones,
if(articulo.codigo='4000' or articulo.codigo='5000',factura_detalle.galones,0) as galones
from factura_detalle
inner join factura on factura_detalle.facturaid=factura.facturaid
inner join personal on factura.pilotoid=personal.personalid
inner join distribucion on factura.distribucionid=distribucion.distribucionid
inner join articulo on factura_detalle.articuloid=articulo.articuloid where articulo.codigo='2005' or articulo.codigo='2010' or articulo.codigo='2020'
or articulo.codigo='2025' or articulo.codigo='2035' or articulo.codigo='2040' or articulo.codigo='2060' or articulo.codigo='2100' or articulo.codigo='4000' or articulo.codigo='5000';
select date_format(fecha, '%Y/%m/%d'),codigo, nombre,distribucion,
(sum(CL05) + sum(CL10)) as OTROS, sum(CL20) as CL20, sum(CL25) as CL25, sum(CL35) as CL35, sum(CL40) as CL40, sum(CL60) as CL60,
sum(CL100) as CL100,
sum(cilingaldros) as cilingaldros, sum(equival_galones) as equival_galones, sum(galones) as galones
from tmp c
where
date_format(fecha, '%Y/%m/%d') between date_format(pFechaFinal,'%Y/%m/01') and date_format(pFechaFinal,'%Y/%m/%d')
group by codigo order by fecha;
END $$
DELIMITER ;



