表1“事务”
Transaction Trans_Date Order_N0 Method Currency Value
----------------------------------------------------------------------
1 1/7/2016 2858 Paypal NZD 156.23
2 1/7/2016 2859 Credit-Card CAD 200.10
3 1/7/2016 2860 Credit-Card GBP 305.87
4 1/7/2016 2861 Credit-Card CAD 200.05
5 1/7/2016 2862 Paypal NZD 539.35
6 1/7/2016 2863 Paypal GBP 824.54
7 1/7/2016 2864 Credit-Card AUD 4828.75
8 1/7/2016 2865 Paypal AUD 8480.25表2 'Exchange‘
date currency rate
----------------------------
1/7/2016 CAD 0.9648
1/7/2016 GBP 0.5617
1/7/2016 NZD 1.0449
2/7/2016 CAD 0.9673
2/7/2016 GBP 0.5645
2/7/2016 NZD 1.045
3/7/2016 CAD 0.9683我只能选择币种为'AUD‘的那些
Select *
From Transaction
Where Currency = 'AUD';但是如何在AUD中计算每个订单收到的金额呢?
发布于 2017-05-30 13:28:20
您将需要以下内容
SELECT t.*, (t.Value * e.Rate) 'Amount'
FROM Transaction t INNER JOIN Exchange e ON t.Trans_Date = e.date and t.Currency = e.currency
WHERE t.Currency = 'AUD'请记住,随着表大小的增长,您将不得不尝试并确保您使用的语句也能提高速度,但对于数据如此少的情况,这并不是一个问题。
发布于 2017-05-30 13:37:15
需要连接两个表,并在WHERE子句中提供货币。试试这个..。
select t1.*,(t1.Value * t2.rate) "Result“from Transaction t1 join Exchange t2 on t1.Currency=t2.currency where t1.Currency='AUD';
发布于 2017-05-30 15:20:10
如果我没理解错的话,你正试图用汇率来计算每个订单在澳元中的价值,也就是说,如果价值是以澳元表示的,就让它保持原样,否则乘以汇率,就可以得到以澳元表示的值。
为此,您将需要左外部连接,即Transaction left outer join Exchange
完整查询如下:
SELECT x.order_no, x.VALUE * NVL (y.rate, 1)
FROM TRANSACTION x LEFT OUTER JOIN EXCHANGE y
ON (x.trans_date = y.DATE AND x.currency = y.currency)https://stackoverflow.com/questions/44253917
复制相似问题