我必须用一种货币创建报告。我需要在不使用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
如何以一种货币(DKK,但LKR的汇率)生成报告,例如状态明确,每月总计,按所有者计算的总数等。
我们必须考虑货币ID,要转换的货币和这些货币类型的月份汇率,以获得项目行的相关值。
希望你清楚我的情景。非常感谢您的帮助。
我不需要每份报告。只需要使用汇率表或状态明智报告在项目表中转换值的SQL,如下所示
status_id value_in_one_currency
1 xxxx
2 xxxx
3 xxxx
答案 0 :(得分:0)
试试这个:
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。
答案 1 :(得分:0)
这是我最终确定的内容: 我将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