Ich habe zwei Tabellen:Aktualisieren von Datenbanktabellen, wenn Werte fehlen
Bill:
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))
Dies ist, was ich tun möchte:
Ich möchte Sie pdate meine Bill Tabelle als
update Bill
set ReportingCurrency = FxRate.ExchangeRate * Bill.Amount
from FxRate
where FxRate.RateDate = Bill.BillDate
In diesem Update werden alle Zeilen, die einen Eintrag für diesen bestimmten Zeitpunkt haben die neuen reportingcurrency Daten. Da die Bill-Tabelle mehrere Zeilen haben kann, die für die Aktualisierung infrage kommen, habe ich folgendes Problem:
Für die Zeilen, für die in der FxRate-Tabelle (für dieses Datum) kein Eintrag vorhanden war, wird die ReportingCurrency NULL. Ich möchte zurück zum nearest <= RateDate
gehen und den Wechselkurs abholen. Ist das möglich mit Änderungen in der gleichen Update-Anweisung oder einer anderen effizienten Methode? (Ich möchte einen Cursor vermeiden).
D'oh. Korrigiert einen dummen Fehler in meiner Antwort. – Tomalak