У меня есть две таблицы:таблицы базы данных Обновление, когда значения отсутствуют
Билл:
create table Bill(
BillDate datetime,
Amount decimal(10,2) ,
BillCurrency varchar(3) ,
ReportingCurrency decimal(10,2))
FxRate:
create table FxRate(
RateDate datetime,
SourceCurrency varchar(3),
TargetCurrency varchar(3),
ExchangeRate decimal(15,4))
Это то, что я хочу сделать:
Я хочу бновить мой Билл стол, как
update Bill
set ReportingCurrency = FxRate.ExchangeRate * Bill.Amount
from FxRate
where FxRate.RateDate = Bill.BillDate
В этом обновлении все строки, которые имеют запись для этой конкретной даты получат новые данные reportingcurrency. Поскольку таблица Билла может иметь несколько строк, пригодных для обновления, у меня есть следующая проблема:
Для строк, в которых не было записи в таблице FxRate (для этой даты), ReportingCurrency становится NULL. Я хочу вернуться к nearest <= RateDate
и получить обменный курс. Возможно ли, что это будет сделано с использованием изменений в одном и том же заявлении или другом эффективном методе? (Я хочу, чтобы избежать курсора).
D'oh. Исправлена глупая ошибка в моем ответе. – Tomalak