2012-02-23 56 views
0

我有一個從存儲過程獲取MAX DATE的問題。SQL存儲過程最大日期問題

基本上,我有一個匯率和捕獲日期的列表,每天都在表格中捕獲這些匯率,我希望返回最新值。

這裏是代碼我的工作..

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由CURRENCY_CODE分組),但還是不行......

任何幫助不勝感激!

+0

哪個RDBMS您使用(SQLSERVER,甲骨文,MySQL等)? – 2012-02-23 12:40:53

+0

SQLSERVER 2005 :) – Rexxo 2012-02-23 12:49:38

回答

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 
+0

這也工作了!謝謝! – Rexxo 2012-02-23 13:21:11

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 

UPDATE 消除由貨幣代碼的不同和組,我被date_loaded想爲了會給你最新的值不知道這是你想要的。

+0

+1,你比我快:) – 2012-02-23 12:23:42

+0

嗯,試一下。獲取錯誤「列」texchange_rate.target_currency_code「在選擇列表中無效,因爲它不包含在聚合函數或GROUP BY子句中。」 – Rexxo 2012-02-23 12:44:03

+0

WHERE查詢工作,我不能張貼我的答案,但又7個小時! :( 非常感謝你的hlep。 – Rexxo 2012-02-23 13:11:22