Затем вы можете присоединиться к этому с остальной частью вашего запроса.
я есть 2 таблицы:
1.tran_test : (id, amount, currency(Currency_Name), date_1)
2.cur_test: (id, currency, date_2, price(amount In USD))
Как получить общую сумму продаж за каждый день, учитывая, что некоторые даты в таблице cur.test отсутствуют, поэтому вам нужно использовать последние доступные даты для расчета результата?
Я написал запрос, который вычисляет сумму, но исключает дни, когда ставки отсутствуют.
Как рассчитать суммы за пропущенные дни?
SELECT date_1, SUM(amount*c.price) AS sum_by_day
FROM tran_test AS t
INNER JOIN cur_test AS c
ON t.currency = c.currency AND date_1 = date_2
GROUP BY date_1;
Мне не нужно просто генерировать даты. Мне нужно рассчитать суммы, используя данные, доступные в таблицах. Если некоторые даты отсутствуют, мне нужно взять последнюю доступную дату, когда доступны курсы валют. Например, в таблице tran.test есть транзакция на 28 сентября, но курсы валют на этот день не указаны, поэтому мне нужно взять последний доступный курс
Образец похожих данных
INSERT INTO tran_test (amount, currency, date_1) VALUES
(1000,'RUB','2018-09-01'),
(15,'USD','2018-09-01'),
(10,'EUR','2018-09-01'),
INSERT INTO cur_test (name,date_2, price) VALUES
('RUB','2018-01-09',0.02),
('USD','2018-01-09',1),
Вывод должен быть как дата - общая сумма за дату 2018-02-21 - 2128
Полный код здесь -https://www.db-fiddle.com/f/v4SHW9XgtgyehbhanQFRx5/2 Фактические данные немного сложнее и включают даты в формате UNIX