SQL中的货币转换

SQL中的货币转换,sql,sqlite,Sql,Sqlite,我正在整理一份交易清单,并希望确定首次成功的特定金额的交易。我已经这样做了,效果很好: select * from transactions where (user_id, created_date) in ( select user_id, min(created_date) from transactions AS T where amount > 10 group by user_id ) AND state = 'COMPLETED'; 我现在面临的问题是,所有交易都是以不同

我正在整理一份交易清单,并希望确定首次成功的特定金额的交易。我已经这样做了,效果很好:

select * from transactions
where (user_id, created_date) in 
(
select user_id, min(created_date) from transactions AS T
where amount > 10 
group by user_id
)
AND state = 'COMPLETED';
我现在面临的问题是,所有交易都是以不同的货币进行的,我需要它们是等值的美元。我有一个交易表,还有一个外汇汇率表,所以我想我需要将两者结合在一起,但我不知道如何整合转换。这些表看起来有点像这样,我不确定如何直接导入表:

Transactions: 
Currency Amount

GBP      3738
AED      588
BTC      1264
EUR      66

FX Rates:

Base Curency Curency Rate

EUR          AED     0.239335579
GBP          HKD     0.103876887
USD          NOK     0.129818755

我有欧元、英镑和美元的汇率,所以我需要进行交易,找到正确的汇率并进行分割。除了将两个表连接在一起,我不知道从何处开始。

我正在对您拥有的数据和名称进行假设,但您可以这样做

 SELECT *, T.amount * CC.CoversionRate AS UsdPrice
 FROM Transactions AS T
 JOIN CurrencyConvert AS CC on T.CurrencyID = CC.CurrencyID

假设您有两个表:

  • 交易
  • 外汇
  • 然后,您可以运行此命令将所有内容转换为欧元:

    SELECT      #transactions.*,
                #transactions.[Value] * #fx.Rate [Value in Euros]
    FROM        #transactions
    INNER JOIN  #fx
    ON          #transactions.Currency = #fx.[Currency - sell]
    
    输出:


    我会用一份案例陈述来解决你的问题。看看这里:。。。Re:为了实现这一点,请列出表的结构并提供一些示例数据。你在这里提供的信息越多,你得到的答案就越好!您可以考虑查看相关子查询。您甚至可以在select语句中使用子查询,这样也可以进行转换@谢谢你的评论。所以我理解你链接的内容,我正在考虑如何使用它。唯一的问题是很容易有30+的汇率,因此理论上我想我可以使用搜索到的每个案例的案例表达式来创建一个新的交易列。但这似乎是一个冗长的方法,所以我一定错过了一个更简单的方法,你的意思是我可以使用它?@Dean这种方法让我担心的是,它需要每次运行,而你发给我的页面似乎认为这会使它变慢。我有176000笔交易要看。当它说这将是缓慢的,是指几个小时,还是几分钟?谢谢@Jabanew如果你提供一个你想要使用的表格的例子,有人会引导你找到最好的方法。目前,没有人能看到您建议的数据如何链接到您提到的其他表,因此不可能给出全面的答案。感谢您的回答,我想我已经设法调整了此数据和我的数据,使其发挥作用。然而,我现在遇到了一个问题。当交易已经是美元时,查询只是跳过它,因此在我的输出中,我缺少X笔美元交易。所以我想我需要写一个“如果”的陈述,说“如果美元,离开。否则做‘上面的代码’…”一个“如果-否则”是可行的,但是你为什么不在外汇表中插入另一行,兑换率是美元->美元=1.00?然后你可以保持同样的逻辑。是的,这正是我最后做的,哈哈。为什么让事情对我来说更难!谢谢你的帮助