0

对,这是我的问题,我有 2 个表,orderentry 和 standardexpenses orderentry(作为 O)看起来像

ORDERNO | FROMSTATIONCODE | TOSTATIONCODE

和标准费用为(SE)看起来像

FROMSTATION | TOSTATION | TOTALAMOUNT | CURRENCY (which is either in MT or USD)

我已经想出了如何转换已经使用的货币

ROUND(SUM(IF(SE.CURRENCY='MT',SE.TOTALAMOUNT*0.0336,SE.TOTALAMOUNT)),2)

我想知道的是我如何加入O.FROMSTATIONCODEandO.TOSTATIONCODESE.FROMSTATIONand SE.TOSTATION...但仍然能够计算SUM(TOTALAMOUNT).

因为现在我的代码是

SELECT 
    FROMSTATION,
    TOSTATION,
    SUM(TOTALAMOUNT),
    COUNT(TOTALAMOUNT),
    CURRENCY
FROM STANDARDEXPENSES
JOIN ORDERENTRY AS O 
    ON STANDARDEXPENSES.FROMSTATION = O.FROMSTATIONCODE
    AND STANDARDEXPENSES.TOSTATION = O.TOSTATIONCODE
GROUP BY FROMSTATION,TOSTATION,CURRENCY

注意:例如。SE 从destination1 到destionation2 有5 种不同的费用,而ORDERENTRY 有12

ORDERNO从destination1到destionation2,我想使用5个费用的总和
(转换后)并将其应用于所有12个ORDERNO,以便它们每个都显示相同的TOTALAMOUNT。

现在我尝试它,它给了我似乎是随机倍数而不是实际数量。

4

1 回答 1

0

我不确定这是否适用于 MySQL,但您可以尝试类似的方法。如果问题是如何转换 TOTALAMOUNT 聚合中的货币值。

SELECT 
FROMSTATION,
TOSTATION,
CASE CURRENCY WHEN 'MT' THEN 0.0336 ELSE 1.00 END AS FX_RATE,
ROUND(SUM(TOTALAMOUNT*FX_RATE),2),
COUNT(TOTALAMOUNT),
CURRENCY
FROM STANDARDEXPENSES
JOIN ORDERENTRY AS O 
ON STANDARDEXPENSES.FROMSTATION = O.FROMSTATIONCODE
AND STANDARDEXPENSES.TOSTATION = O.TOSTATIONCODE
GROUP BY FROMSTATION,TOSTATION,CURRENCY
于 2013-11-07T09:55:25.730 回答