我有一個transactions
表。這些字段有id
,trans_date
,amount
,currency
。子查詢對彙總查詢執行FX計算
我有另一個表fx_rates
與領域id
,fx_date
,currency
,rate_to_gbp
。
我希望彙總某一日期的GBP交易量。例如。
SELECT format(transactions.trans_date, "mm-yyyy") as monthyear, sum(transactions.amount) as amount_sum
FROM transactions
GROUP BY format(transactions.trans_date, "mm-yyyy");
但是我的一些交易不是英鎊。是否有可能通過使用子查詢在具有transactions.currency <> "GBP"
的那些字段上執行貨幣轉換?
喜歡的東西:
sum(iif(transactions.currency = "GBP",
transactions.amount,
transactions.amount/(
SELECT fx_rates.rate_to_gbp
WHERE fx_rates.currency = transactions.currency
AND transactions.trans_date = fx_rates.fx_date
))
???
編輯:下面的示例數據...
交易:
id account_id trans_date amount currency
----------------------------------------------------
1797 GFSS35 28/01/2005 365000 USD
1798 LA1F8 04/03/2005 100247.57
1799 IDFS12 31/03/2005 2396.89 GBP
1800 DF088 06/04/2005 14000 EUR
1801 BGD005 18/05/2005 450000
外匯價格:
id fx_date currency rate_to_gbp
-------------------------------------------
3367 25/11/2018 USD 1.62
3368 25/11/2018 EUR 1.2
3369 25/11/2018 CHF 1.47
3412 11/12/2013 USD 1.64
3413 11/12/2013 EUR 1.2
3414 11/12/2013 CHF 1.46
'fx_rates'表包含'fx_date'字段。這是否意味着每個'currency'可以有多行,並且您必須引用'fx_date'字段來確定哪些行適用於特定的'transactions.trans_date'? – HansUp
在外匯匯率表中,每個貨幣日期組合不應該多於1行,因爲有一個表的複合唯一鍵。但我明白你的意思了,更新後的問題 – harryg
請爲這兩張表格添加簡短的數據樣本,並向我們展示這些數據的期望輸出。 – HansUp