Mysql заполнить пробелы в дате - PullRequest
0 голосов
/ 15 мая 2019

Я пытаюсь получить значения из dataTable за последние 7 дней, если нет данных для конкретной даты, ноль должен быть заполнен в выводе:

SELECT calendar.dt, COALESCE(SUM(weight*price),0) AS amount
FROM
    (SELECT CURRENT_DATE AS dt
       UNION ALL SELECT CURRENT_DATE - INTERVAL 1 DAY
       UNION ALL SELECT CURRENT_DATE - INTERVAL 2 DAY
       UNION ALL SELECT CURRENT_DATE - INTERVAL 3 DAY
       UNION ALL SELECT CURRENT_DATE - INTERVAL 4 DAY
       UNION ALL SELECT CURRENT_DATE - INTERVAL 5 DAY
       UNION ALL SELECT CURRENT_DATE - INTERVAL 6 DAY) calendar
LEFT JOIN dataTable ON calendar.dt = DATE(dataTable.sold_at);

Запрос выше возвращает только одну запись:

enter image description here

Посоветуйте, пожалуйста, что не так с запросом SQL?

1 Ответ

0 голосов
/ 15 мая 2019

Кажется, что group by отсутствует.

SELECT calendar.dt, COALESCE(SUM(weight*price),0) AS amount
FROM
    (SELECT CURRENT_DATE AS dt
       UNION ALL SELECT CURRENT_DATE - INTERVAL 1 DAY
       UNION ALL SELECT CURRENT_DATE - INTERVAL 2 DAY
       UNION ALL SELECT CURRENT_DATE - INTERVAL 3 DAY
       UNION ALL SELECT CURRENT_DATE - INTERVAL 4 DAY
       UNION ALL SELECT CURRENT_DATE - INTERVAL 5 DAY
       UNION ALL SELECT CURRENT_DATE - INTERVAL 6 DAY) calendar
LEFT JOIN dataTable ON calendar.dt = DATE(dataTable.sold_at)
Group by calendar.dt
;

Скриптовая ссылка SQL: http://sqlfiddle.com/#!9/f151a8e/4

...