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 の費用があります。

ORDERNOdestination1 から 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 に答える