こんにちは。ご協力ありがとうございます 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'
)
どんな提案でも大歓迎です。