表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'交换'
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
中每张订单的收款金额?
答案 0 :(得分:2)
您需要以下内容
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'
请记住,随着表格大小的增长,您将不得不尝试并确保您使用的语句也适用于速度,但这并不是对具有如此少数据的事情的关注。
答案 1 :(得分:0)
需要加入两个表并在WHERE子句中提供货币。 试试这个..
选择t1。*,(t1.Value * t2.rate)“结果”来自事务t1加入Exchange t2 on t1.Currency = t2.currency,其中t1.Currency ='AUD';
答案 2 :(得分:0)
如果我理解问题是正确的,那么您正在尝试使用汇率在AUD中查找每个订单的价值,即如果值为AUD,则保持原样,否则乘以汇率以找到AUD中的值。
为此,您需要左外连接,即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)
答案 3 :(得分:0)
我找到了解决方案 -
SELECT x.*,(x.VALUE * y.rate) 'AUD Value'
FROM TRANSACTION1 x LEFT OUTER JOIN EXCHANGE y
ON (x.trans_date = y.DATE AND x.currency = y.currency) where x.Currency <>'AUD'
union
Select *,Value
From Transaction1
Where Currency = 'AUD'