sql >> Base de Datos >  >> RDS >> Mysql

Rellene los espacios que faltan en la consulta de rango de fechas usando la tabla de calendario

Necesita una combinación externa en la tabla del calendario. Algo como

SELECT c.cal_date, coalesce(t1.price, 0) as total
FROM calendar c
LEFT JOIN (SELECT b.purchase_date::date, sum(price) as price 
           FROM order_products a 
           INNER JOIN order_saved b 
                   ON a.order_id = b.id 
                   AND b.purchase_date BETWEEN '2011-09-16 23:59' AND '2011-10-16 23:59' 
                   AND b.status > 2
                   AND a.usr_id = 'XXXX'
            GROUP BY b.purchase_date) t1 on t1.purchase_date = c.cal_date
WHERE cal_date BETWEEN '2011-09-16 23:59' AND '2011-10-16 23:59' 
ORDER BY c.cal_date

Obtendrá mejores respuestas si publica el DDL (CREATE TABLE ) declaraciones y INSERT mínimo declaraciones que nos dan suficientes datos para probar nuestras respuestas. (Edite su pregunta y pegue las instrucciones DDL e INSERT).