Чтобы решить эту проблему, вам нужно сгенерировать все даты в нужный период времени. Затем вы можете join
таблицу, из которой вам нужно запросить. Вот мое решение.
Попытка воспроизвести вашу таблицу и ее значения.
INSERT INTO rentabilidade_fundos (data, conservado, moderado, arrojado)
VALUES
('2020-04-01', 1, 1, 1),
('2020-04-02', 2, 2, 2),
('2020-04-03', 3, 3, 3),
('2020-04-15', 15, 15, 15),
('2020-04-21', 21, 21, 21),
('2020-04-25', 25, 25, 25),
('2020-04-29', 29, 29, 29),
('2020-04-30', 30, 30, 30);
Мои данные в таблице выглядят следующим образом.
rentabilidade_fundos table .
Чтобы извлечь все поля за последние 30 дней с начальной датой 2020-04-01
, вы можете использовать запрос ниже.
set @i = -1;
set @stop = 29;
SELECT rf.id, x.date, rf.conservado, rf.moderado, rf.arrojado
FROM rentabilidade_fundos rf
RIGHT JOIN (
SELECT DATE(ADDDATE('2020-04-01', INTERVAL @i:=@i+1 DAY)) AS date FROM rentabilidade_fundos
HAVING @i < @stop
) x ON x.date = rf.data
ORDER BY x.date;
Окончательный результат будет таким, как показано ниже.
Окончательный результат