我遇到了从存储过程中获取MAX DATE的问题。
基本上,我有一个包含捕获日期的汇率列表,这些列表每天都存储在一个表格中,我希望返回最新值。
以下是我正在处理的代码..
select
distinct t.source_currency_code, t.target_currency_code,
'(' + t.source_currency_code + ') ' + s.currency_name as source_currency_name,
'(' + t.target_currency_code + ') ' + x.currency_name as target_currency_name,
t.converted_amount as buy_rate,
t.date_loaded as date_loaded
from texchange_rate t, tcurrency s, tcurrency x
where
s.currency_code = t.source_currency_code and
x.currency_code = t.target_currency_code
order by t.source_currency_code
我的想法是MAX(.t.date_loaded按货币代码分组),但这不起作用......
感谢任何帮助!
答案 0 :(得分:2)
我认为你需要有源和目标货币作为查找最新购买率的元素。
你能和他相处吗? SELECT
t.source_currency_code, t.target_currency_code,
'(' + t.source_currency_code + ') ' + s.currency_name as source_currency_name,
'(' + t.target_currency_code + ') ' + x.currency_name as target_currency_name,
t.converted_amount as buy_rate,
t.date_loaded as date_loaded
FROM
texchange_rate t
INNER JOIN tcurrency s
ON t.source_currency_code = s.currency_code
INNER JOIN tcurrency x
ON t.target_currency_code = x.currency_code
WHERE t.date_loaded in
(
SELECT max(date_loaded) from texchange_rate tt
where t.source_currency_code = tt.source_currency_code
and t.target_currency_code = tt.target_currency_code
)
order by date_loaded desc
<强>更新强> 删除distinct和group by货币代码,我认为按date_loaded的顺序会给你最新的值,不知道这是不是你想要的。
答案 1 :(得分:1)
尝试:
select * from
(select t.source_currency_code,
t.target_currency_code,
'('+t.source_currency_code+') ' + s.currency_name as source_currency_name,
'('+t.target_currency_code+') ' + x.currency_name as target_currency_name,
t.converted_amount as buy_rate,
t.date_loaded as date_loaded,
rank() over (partition by t.source_currency_code,
t.target_currency_code
order by t.date_loaded desc) rn
from texchange_rate t
join tcurrency s on s.currency_code = t.source_currency_code
join tcurrency x on x.currency_code = t.target_currency_code) v
where rn = 1
order by source_currency_code, target_currency_code