繁体   English   中英

如何通过从另一表中计算一个列值来联接表

[英]How to join table by calculating one column value from other table

表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

我只能选择货币为“澳元”的货币

Select * 
From Transaction 
Where Currency = 'AUD';

但是,如何计算每笔定单在AUD收到的金额?

您需要以下内容

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'

请记住,随着表大小的增加,您将不得不尝试确保所使用的语句也可以提高速度,但是对于数据量如此之少的内容而言,这并不是问题。

需要联接两个表并在WHERE子句中提供货币。 尝试这个..

从事务t1中选择t1。*,(t1.Value * t2.rate)“结果”,在t1.Currency = t2.currency上加入交易所t2,其中t1.Currency ='AUD';

如果我理解正确的问题,那么您正在尝试使用汇率查找以AUD为单位的每个订单的价值,即,如果以AUD为单位,则保持原样,否则将其乘以汇率以AUD为单位查找价值。

为此,您将需要左外部联接,即Transaction left outer join Exchange联接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)

我找到了解决方案-

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'

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM