Qué tal?
Temgo la siguiente consulta que me da lo pago, impago y la suma de ambos en un determinado período (mes actual y 9 meses hacia atrás por default). Hasta ahí, perfecto. El tema es cuando aparecen períodos que no tiienen resultados (agrupo por mes). Para esos necesito que me vuelva en 0, pero no que no lo tenga en cuenta, porque después ordeno esto en una tabla html con fechas y se me corren las columnas. Paso la consulta como está:
SELECT
YEAR(PI.date_invoice) AS year,
MONTH(PI.date_invoice) AS month,
@unpaid := SUM(CASE
WHEN PI.status = '1' THEN PI.amount_dolar
ELSE 0
END) AS unpaid,
@paid := SUM(CASE
WHEN PI.status = '2' THEN PI.amount_dolar
ELSE 0
END) AS paid,
@total := SUM(CASE
WHEN PI.status != '3' THEN PI.amount_dolar
ELSE 0
END) AS total
FROM crm_provider_invoice PI
LEFT JOIN crm_provider P ON(PI.id_provider = P.id_provider)
WHERE DATE_FORMAT(PI.date_invoice, '%Y-%m-%d') BETWEEN DATE_SUB(LAST_DAY(SYSDATE()), INTERVAL 9 MONTH) AND DATE_SUB(LAST_DAY(SYSDATE()), INTERVAL 0 MONTH)
GROUP BY MONTH(PI.date_invoice)
ORDER BY year DESC, month DESC
Lo que necesitaría son los registros mes a mes, sin importar si hay o no. Y en los casos en los que no haya que me permita generar el mes con valores 0 para lo pago, impago y el total.
El que pueda ayudarme con esto le estaré agradecido.