1

こんにちは。ご協力ありがとうございます SQL 2008 でビューを作成しています。金額を別の通貨に変換する必要があります。また、日付に基づいて適切な通貨を使用していることを確認する必要があります。以前は、変換を簡単にするために月の平均を作成していましたが、各フィールドを個別に計算する方が良いと思います。

私の通貨テーブルからのデータは、(簡略化された)TABLE Aのようになります。

HOMECUR  SOURCECUR RATEDATE  RATE 
USD      CAD       20120314  1.0086000
USD      CAD       20120316  1.0087000

金額表のデータは、(簡略化された) 表 B のようになります。

RATEDATE TRANSAMT FISCALYR FISCALPERD ACCTID
20120314 120.00   2012     05         123456

したがって、私の質問は、RATEDATE に一致する RATE を取得するにはどうすればよいかということです。それが存在しない場合は、直前の次の RATEDATE の RATEDATE になります。

全体として、acctID、FISCALYR、FISCALPERD でデータをグループ化し、計算された金額を合計していますが、WITH ステートメントで合計する前に金額を変換することにしました。

ALTER VIEW vJFTESTVIEW
AS
    WITH        
    ActualRateHAIUSA as(
        SELECT POP =  rat.RATE * act.TRANSAMT,
               act.FISCALYR,
               act.FISCALPERD,
               act.ACCTID as ACID
        FROM 
            TABLEA rat,
            TABLEB act
        WHERE -- as my table shows TABLE B's RATEDATE is on the 15th of March
              --, while TABLE A does not have the 15th of March. 
              --It should then take the one 14h instead 
              --(the next closest date while not going the original date) 
              AND rat.HOMECUR = 'CAD'
              AND rat.SOURCECUR = 'USD' 
    )

どんな提案でも大歓迎です。

4

0 に答える 0