Pues eso mis estimados, tengo la siguiente consulta:
SELECT SUM(COALESCE(ins_cantidad,0)) AS total, CASE EXTRACT(MONTH FROM CAST(ins_fecha AS DATE)) WHEN 1 THEN 'ENERO ' || ' ' || EXTRACT(YEAR FROM ins_fecha) WHEN 2 THEN 'FEBRERO ' || ' ' || EXTRACT(YEAR FROM ins_fecha) WHEN 3 THEN 'MARZO ' || ' ' || EXTRACT(YEAR FROM ins_fecha) WHEN 4 THEN 'ABRIL ' || ' ' || EXTRACT(YEAR FROM ins_fecha) WHEN 5 THEN 'MAYO ' || ' ' || EXTRACT(YEAR FROM ins_fecha) WHEN 6 THEN 'JUNIO ' || ' ' || EXTRACT(YEAR FROM ins_fecha) WHEN 7 THEN 'JULIO ' || ' ' || EXTRACT(YEAR FROM ins_fecha) WHEN 8 THEN 'AGOSTO ' || ' ' || EXTRACT(YEAR FROM ins_fecha) WHEN 9 THEN 'SEPTIEMBRE ' || ' ' || EXTRACT(YEAR FROM ins_fecha) WHEN 10 THEN 'OCTUBRE ' || ' ' || EXTRACT(YEAR FROM ins_fecha) WHEN 11 THEN 'NOVIEMBRE ' || ' ' || EXTRACT(YEAR FROM ins_fecha) WHEN 12 THEN 'DICIEMBRE ' || ' ' || EXTRACT(YEAR FROM ins_fecha) END AS fecha FROM insumos_saldos WHERE CAST(ins_fecha AS DATE) BETWEEN dateadd(MONTH,-12,CURRENT_DATE) AND dateadd(MONTH,-1,CURRENT_DATE) AND ins_tipo_saldo IN ('S','SA') AND ins_id = 1 GROUP BY EXTRACT(MONTH FROM ins_fecha), EXTRACT(YEAR FROM ins_fecha ) ORDER BY EXTRACT(YEAR FROM ins_fecha) ASC
Funciona correctamente, obtengo los despachos de un items de los últimos 12 meses sin incluir el mes actual, mi problema radica en que no puedo obtener los meses donde no hubo movimientos, ejemplo:
50 - Diciembre 2016
25 - Enero 2017
30 - Mayo 2017
Debería ser:
0 - Junio 2016
0 - Julio 2016
0 - Agosto 2016
0 - Septiembre 2016
0 - Octubre 2016
0 - Noviembre 2016
50 - Diciembre 2016
25 - Enero 2017
0 - Febrero 2017
0 - Marzo 2017
0 - Abril 2017
30 - Mayo 2017
Sé que se debería hacer a través de Stored Procedure, pero aún no domino ese tipo de complejidad.
Saludos.