我有一种情况,我需要获取FromCountry和ToCountry的组合的最大日期记录的FXRate。
FromCountry ToCountry FXRate FXDate
--------------------------------------------------------
A B 1.14 1/1/2019
A B 1.13 2/1/2019
A B 1.12 3/1/2019
A B 1.11 4/1/2019 -- Expected Record for 'A' and 'B'
c D 1.16 1/1/2019
c D 1.17 2/1/2019
c D 1.18 3/1/2019
c D 1.19 4/1/2019 -- Expected Record for 'C' and 'D'
问题是视图'FXView'具有许多记录,而我目前的方法看起来像这样
SELECT
fx.FromCountry
, fx.ToCountry
, fx.FXDate
, fx.FXRate
FROM
(
SELECT
FromCountry
, Tocountry
, Max(FXDate) as MaxFXDate
FROM FXView
GROUP BY
FromCountry
, Tocountry
)result
INNER JOIN FXView fx
ON result.FromCountry = fx.FromCountry
AND result.ToCountry = fx.ToCountry
AND result.MaxFXDate = fx.FXDate
我也尝试过使用Max窗口函数,然后获得它的“区别”,但这也需要时间。
是否有更好的解决方案来解决此性能问题?
注意:此视图中没有任何自然键。