首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何通过计算其他表中的一个列值来连接表

如何通过计算其他表中的一个列值来连接表
EN

Stack Overflow用户
提问于 2017-05-30 13:13:58
回答 4查看 72关注 0票数 0

表1“事务”

代码语言:javascript
复制
 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‘

代码语言:javascript
复制
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‘的那些

代码语言:javascript
复制
Select * 
From Transaction 
Where Currency = 'AUD';

但是如何在AUD中计算每个订单收到的金额呢?

EN

回答 4

Stack Overflow用户

发布于 2017-05-30 13:28:20

您将需要以下内容

代码语言:javascript
复制
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'

请记住,随着表大小的增长,您将不得不尝试并确保您使用的语句也能提高速度,但对于数据如此少的情况,这并不是一个问题。

票数 2
EN

Stack Overflow用户

发布于 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';

票数 0
EN

Stack Overflow用户

发布于 2017-05-30 15:20:10

如果我没理解错的话,你正试图用汇率来计算每个订单在澳元中的价值,也就是说,如果价值是以澳元表示的,就让它保持原样,否则乘以汇率,就可以得到以澳元表示的值。

为此,您将需要左外部连接,即Transaction left outer join Exchange

完整查询如下:

代码语言:javascript
复制
    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)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44253917

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档