Ver Mensaje Individual
  #1 (permalink)  
Antiguo 09/06/2012, 07:24
malbo
 
Fecha de Ingreso: junio-2012
Mensajes: 7
Antigüedad: 11 años, 11 meses
Puntos: 0
Ordenar consulta por meses aunque no haya resultados

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.

Última edición por malbo; 09/06/2012 a las 07:51