【发布时间】:2014-04-10 06:51:54
【问题描述】:
我正在尝试从年度数据表 (Companies_Annual) 中选择数据,并根据其财政年度结束时的现行汇率将值转换为另一种货币,该汇率存储在包含每日汇率的第二个表中 ( FX_daily)。然而,一个复杂的因素是,我需要从Companies_Annual 中选择某些历史财政年度结束时的汇率值可能不可用,而未来的年度数据将需要以最后的现行汇率转换。
我的问题是,如何从FX_daily 表中选择与CA 表中的Year 相关的最后一个可用的fx_rate,并将其应用于转换@987654329 中的Value 字段@ 桌子?我试图在FX.Date 上加入CA.year 并使用MAX() 函数为每个fx_rate 获取最后一个fx_rate,但我的语法显然是错误的。谁能帮我这个?
表结构大致如下:
CA table
Year ticker Value
2012-12-31 xyz 2,000
2013-12-31 xyz 2,100
2014-12-31 xyz 2,200
2015-12-31 xyz 2,300
2016-12-31 xyz 2,400
FX_daily table
Date fx_code fx_rate
2000-12-25 £:$ 1.45
2000-05-26 £:$ 1.45
2000-05-27 £:$ 1.45
…… etc
2014-02-04 £:$ 1.67
2014-02-05 £:$ 1.65
2014-02-06 £:$ 1.67
2014-02-07 £:$ 1.66
我尝试结合简单的选择从 CA 表中获取 Year 数据
SELECT ca.year
FROM companies_annual ca
WHERE ca.ticker ='xyz'
AND ca.year >=2013-12-31
ORDER BY ca.year LIMIT 4
这给了我年终日期确定
year
2012-12-31
2013-12-31
2014-12-31
2015-12-31
并使用Max()函数获取最后一个fx_rate和date,
SELECT max(date),fx_code,fx_rate
FROM fx_daily
WHERE date <='2016-12-31'
AND fx_code ='$:£'
ORDER BY date LIMIT 6
这让我得到了最后的费率,但只有 1 年
max(date) fx_code fx_rate
2014-03-05 $:£ 1.618
【问题讨论】: