Я хочу объединить две таблицы, и в одной отсутствует строка для каждой валютной группы.
Таблицы:
Транзакции в местной валюте, агрегированные по месяцам. (Таблица транзакций)
Date Currency spend
2019-01-01 EUR 100
2019-02-01 EUR 200
2019-03-01 EUR 500
2019-04-01 EUR 214
2019-01-01 JYP 3200
2019-01-01 JYP 1534
2019-02-01 JYP 1534
2019-03-01 JYP 1534
2019-04-01 JYP 1534
Обменный курс по месяцам (таблица exchange_data)
Month Currency Average Monthly rate
2019-01-01 EUR 1.2
2019-02-01 EUR 1.3
2019-03-01 EUR 1.4
2019-01-01 JYP 101
2019-02-01 JYP 102
2019-03-01 JYP 103
2019-01-01 USA 1
2019-02-01 USA 1
2019-03-01 USA 1
Я хочу выполнить объединение, чтобы получить все транзакции в долларах США.Проблема в том, что курс на текущий месяц (2019-04-01) недоступен.Таким образом, все транзакции за текущий месяц возвращают NULL после объединения.
Мне удалось решить это в R, но есть ли способ решить это с помощью SQL?Я пытался использовать оконную функцию, но безуспешно
LAG(rate,1) OVER (PARTITION BY currency ORDER BY month)
Решение в R: Предполагая, что скорость остается постоянной.
library(lubridate)
library(dplyr)
exchange_previous <- exchange_data[exchange_data$month == floor_date(today(),"month") %m-% months(1),]
exchange_previous$month <- exchange_previous$month %m+% months(1)
exchange_data<-rbind(exchange_data,exchange_previous)
final <- transactions %>%
left_join(exchange_data, by = c("currency" = "name", "floor_date" = "month"))
Then simply multiply