SQL,根据日期获取正确的转换率

时间:2013-05-03 19:32:02

标签: sql-server-2008 with-statement

您好,感谢您的帮助我在SQL 2008中创建了一个View,我需要将金额转换为其他货币,我还需要确保它使用基于日期的相应货币。在我开始创建本月平均值以简化转换之前,我认为每个字段单独计算会更好。

我的货币表中的数据看起来如此(简化)表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

所以我的问题是,我可以将RATE与RATEDATE匹配,如果不存在,则RATEDATE就在之前的下一个RATEDATE。

总的来说,我按照acctID,FISCALYR和FISCALPERD对数据进行分组并对汇总的数量进行汇总,但我决定在使用WITH语句对它们进行SUMing之前转换金额。

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' 
    )

任何建议都将不胜感激。

0 个答案:

没有答案