Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Задача простановки курса валюты  [new]
neandromeda
Member

Откуда:
Сообщений: 41
Добрый день.
Имеются вот такие исходные данные:
1) таблица, в которой необходимо проставить курсы (заполнить поле Rate ):
select 5 as Currency_id, cast ('2010-09-04' as date) as [Date], NULL as Rate
union
select 5, cast ('2010-09-05' as date), NULL
union 
select 5, cast ('2010-11-24' as date), NULL


2) таблица, из которой необходимо проставить курсы (из прля Rate):
select 5 as Currency_id, cast ('2010-09-03' as date) as [Date], 40.7 as Rate
union 
select 5, cast ('2010-11-23' as date), 39


Необходимо в 1) проставлять самый ближний по дате НАЗАД курс, который ИМЕЕТСЯ в 2), то есть для, например, даты '2010-09-04' из 1) это будет курс на дату '2010-09-03' из 2), то есть 40.7, для даты '2010-09-05' из 1) это будет также курс на дату '2010-09-03', то есть ближайший имеющийся курс по дате назад из 2) и т.д. Ну и добавлять еще условие равенства кода валют (Currency_id) в 1) и 2), т.к. проставляем курсы для конкретной валюты.
Спасибо.
4 июн 12, 15:11    [12662174]     Ответить | Цитировать Сообщить модератору
 Re: Задача простановки курса валюты  [new]
invm
Member

Откуда: Москва
Сообщений: 9836
update + select top (1) ... order by ...
4 июн 12, 15:20    [12662258]     Ответить | Цитировать Сообщить модератору
 Re: Задача простановки курса валюты  [new]
neandromeda
Member

Откуда:
Сообщений: 41
invm,

Можно,пожалуйста, поподробнее применительно к данной задаче? Нужен ли здесь курсор?
4 июн 12, 15:27    [12662314]     Ответить | Цитировать Сообщить модератору
 Re: Задача простановки курса валюты  [new]
invm
Member

Откуда: Москва
Сообщений: 9836
neandromeda,

Какой, нафик, курсор??
update t
 set
  Rate = (select top (1) Rate from Table2 where Currency_id = t.Currency_id and [Date] <= t.[Date] order by [Date] desc)
from
 Table1
where
 Rate is null
4 июн 12, 15:39    [12662420]     Ответить | Цитировать Сообщить модератору
 Re: Задача простановки курса валюты  [new]
Bator
Member

Откуда: Порт пяти морей
Сообщений: 439
neandromeda, задача на собеседованиях ;)

в первый раз я ее решил без знаний об аутер эппли - джойн на запрос подзапросом
с аутер эппли решается проще - топ 1 и ордер бай деск

этих знаний достаточно, чтобы самостоятельно решить эту задачу.
4 июн 12, 16:04    [12662651]     Ответить | Цитировать Сообщить модератору
 Re: Задача простановки курса валюты  [new]
neandromeda
Member

Откуда:
Сообщений: 41
invm,

Благодарю!
4 июн 12, 18:40    [12663844]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить