首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过选择数据并从第二个表- Oracle sql中执行计算来更新第一个表

通过选择数据并从第二个表- Oracle sql中执行计算来更新第一个表
EN

Stack Overflow用户
提问于 2017-10-22 20:55:21
回答 1查看 35关注 0票数 0

我在oracle中有两个表,表1和表2。

表1

代码语言:javascript
复制
     mm/yy     order-id     cost   currency    
   -------    ---------    ------  -------- 
    01/17        1         25       pound
    03/17        2         30       euro
    04/17        3         16       pound
    05/17        4         14       pound
    06/17        5         10       euro
    06/17        6         10       usd

表2

代码语言:javascript
复制
    dd/mm/yy        currency   Conversion_rate_to_USD
   ------------  ----------    -------------------- 
    01/01/17        pound          1.24
    02/01/17        pound          1.23
    03/01/17        pound          1.26
    ........        ......         ....
    ........        ......         ....
    ........        ......         ....
    01/04/17        pound          1.24
    02/04/17        pound          1.23
    03/05/17        pound          1.26
    ........        ......         ....
    ........        ......         ....
    ........        ......         ....
    01/03/17        euro           1.15
    02/03/17        euro           1.16
    03/06/17        euro           1.11
    01/06/17        euro           1.07

我想为表1中的每一行检索以美元换算的成本(使用表2中当月的平均转换成本)。

提前感谢

EN

回答 1

Stack Overflow用户

发布于 2017-10-22 21:02:12

这个答案假设"date“列确实存储为日期。日期函数在不同的数据库中是不同的,但这(或一个小的变体)应该在大多数数据库中都有效。

要从table2获取每月的平均值:

代码语言:javascript
复制
select year(ddmmyy), month(ddmmyy), currency, avg(Conversion_rate_to_USD)
from table2
group by year(ddmmyy), month(ddmmyy), currency;

要进行转换,请使用以下内容作为子查询:

代码语言:javascript
复制
select t1.*,
       (t1.cost * t2.avg_c) as cost_in_usd
from table1 t1 join
     (select year(ddmmyy) as yr, month(ddmmyy) as mon, currency,
             avg(Conversion_rate_to_USD) as avg_c
      from table2
      group by year(ddmmyy), month(ddmmyy), currency
     )  t2
     on t2.yr = year(t1.mmyy) and t2.mon = year(t1.mmyy) and
        t2.currency = t1.currency;
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46874308

复制
相关文章

相似问题

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