2012-02-23 17 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

? –

+0

SQLSERVER 2005 :) – Rexxo

答えて

1

試してみてください。RDBMS(SQLServerのは、Oracle、MySQLの、など)を使用している

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

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、あなたは私より速いです:) –

+0

うーん、それを試してください。エラーが発生しました "列 'texchange_rate.target_currency_code'は集計関数またはGROUP BY句に含まれていないため、選択リストでは無効です。 – Rexxo

+0

WHEREクエリが機能しましたが、私はまだ7時間も答えを投稿できません! : ありがとうございました。 – Rexxo

関連する問題