【问题标题】:Mysql select result in one currencyMysql选择结果以一种货币
【发布时间】:2023-03-15 06:56:02
【问题描述】:

我必须以一种货币创建报告。我需要在不使用 PHP 进程的情况下在 MySQL 中进行查询。但无法弄清楚。 有一个名为 currency_exchange_rate 的表,如下所示,(LKR 对其他货币的汇率)。这个表就像每个月 LKR 中每种货币的一条记录一样更新

exchange_rates

id  currency_id  start_date  exchange_rate
1     5           2017-01-2      155
2     4           2017-01-3      25
3     6           2017-01-3      53
4     5           2017-02-1      156
5     4           2017-02-1      24
6     6           2017-02-1      54   

有一个项目表如下

 pro_id  name      value      currency_id  status_id  owner_id  date
 1       studio1   500        5              1          44      2017-01-20
 2       lotus     120        5              1          42      2017-01-21
 3       auro      300        4              2          45      2017-01-21
 4       studio2   400        6              1          44      2017-01-22
 5       holland   450        4              3          46      2017-02-05
 6       studio3   120        4              3          47      2017-02-06
 7       studio4   400        6              3          48      2017-02-06 

如何以一种货币生成报告(丹麦克朗,但汇率以 LKR 为单位),如状态、每月总计、所有者总计等。

我们必须考虑货币 ID、要转换的货币以及这些货币类型的月份汇率,以获得项目行的相关值。

希望您清楚我的情况。非常感谢您的帮助。

我不需要每份报告。只需要一个 sql 用于使用汇率表或状态报告转换项目表中的值,如下所示

status_id  value_in_one_currency
1          xxxx
2          xxxx
3          xxxx

【问题讨论】:

  • 您的问题似乎过于笼统,请尽量简化。您可以将其分解为多个问题并提出。
  • @cdaiga 我不需要每份报告。只需要一个 sql 用于使用汇率表转换项目表中的值

标签: mysql join group-by


【解决方案1】:

试试这个:

SELECT A.status_id, A.`value` * B.exchange_rate `value_in_one_currency`
FROM project A JOIN exchange_rates B
ON A.currency_id=C.currency_id 
   AND DATE_FORMAT(A.`date`,'%m-%Y')=DATE_FORMAT(B.`start_date`,'%m-%Y');

请参阅MySQL Join Made Easy 了解一些见解。

【讨论】:

  • 感谢您的回答@cdaiga,但您错过了一些积分 value_in_LKR=value*exchange_rate_for_the_month; value_in_one_currency_DKK=value_in_LKR/DKK_exchange_rate_for_the_month;无论如何,您的回答都可以帮助我找到解决方案。需要您根据以下答案进行优化
  • 请看我的回答@cdaiga
  • 填写xxxx的值
【解决方案2】:

这是我最终确定的: 我把currency_id=5作为最终要转换的货币

SELECT A.*,C.exchange_rate AS DKK,D.exchange_rate AS LKR, (order_value * D.exchange_rate /C.exchange_rate ) AS `converted_value`
FROM projects A 
LEFT JOIN exchange_rates C ON  (DATE_FORMAT(C.start_date,'%Y-%m')=DATE_FORMAT(A.`date`,'%Y-%m') AND C.currency_id=5)
LEFT JOIN exchange_rates D ON  DATE_FORMAT(D.start_date,'%Y-%m')=DATE_FORMAT(A.`date`,'%Y-%m') AND D.currency_id=A.currency_id

【讨论】:

    猜你喜欢
    • 2022-12-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-27
    • 1970-01-01
    相关资源
    最近更新 更多