SQL хранится в процедуре максимальной даты выпуска - PullRequest
0 голосов
/ 23 февраля 2012

У меня проблема с получением МАКСИМАЛЬНОЙ ДАТЫ из хранимой процедуры.

По сути, у меня есть список курсов обмена с датой захвата, которые ежедневно регистрируются в таблице, и я хочу вернутьсяпоследнее значение.

Вот код, над которым я работаю ..

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 сгруппированы по коду валюты), но это не работает ...

Любая помощь приветствуется!

Ответы [ 2 ]

2 голосов
/ 23 февраля 2012

Я думаю, вам нужно иметь исходную и целевую валюту в качестве элементов для поиска вашего последнего курса покупки.

не могли бы вы ладить с этим?

 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 удалить отличные и сгруппировать по коду валюты, я думаю, что порядок по дате_загрузке даст вам последние значения не уверен, если это то, что вы хотите.

1 голос
/ 23 февраля 2012

Попробуйте:

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...