我正在尝试从年度数据表(Companies_Annual
)中选择数据,并根据其会计年度末的现行汇率将这些值转换为另一种货币,这些汇率存储在包含每日汇率的第二个表中费率(FX_daily
)。然而,一个复杂的因素是,我需要从Companies_Annual
选择一些历史性的财政年度结果可能无法获得汇率值,而未来的年度数据将需要按照最后的现行汇率进行转换。
我的问题是,如何从fx_rate
表中选择与FX_daily
表中的Year
相关的最后一个CA
并应用此转换为Value
表中的CA
字段?我尝试在CA.year
上加入FX.Date
并使用MAX()
函数获取每个fx_rate
的最后CA.Year
,但我的语法显然是错误的。谁能帮我这个?
表结构大致如下:
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
我试图将简单的select与来自CA表的{{1}}数据结合起来
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
这让我获得了最后的费率,但只有1年
SELECT max(date),fx_code,fx_rate
FROM fx_daily
WHERE date <='2016-12-31'
AND fx_code ='$:£'
ORDER BY date LIMIT 6
答案 0 :(得分:0)
在GROUP BY
和fx_code
值的查询中添加fx_rate
。
示例:
SELECT
max(date) mx_date,fx_code,fx_rate
FROM fx_daily
WHERE
date <='2016-12-31' AND fx_code ='$:£'
GROUP BY
fx_code, fx_rate
ORDER BY date LIMIT 6