I ont deux tables:tables de base de données Mise à jour lorsque les valeurs sont manquantes
Bill:
create table Bill(
BillDate datetime,
Amount decimal(10,2) ,
BillCurrency varchar(3) ,
ReportingCurrency decimal(10,2))
Taux de Change:
create table FxRate(
RateDate datetime,
SourceCurrency varchar(3),
TargetCurrency varchar(3),
ExchangeRate decimal(15,4))
Voici ce que je veux faire:
Je veux vous pdate ma table de Bill comme
update Bill
set ReportingCurrency = FxRate.ExchangeRate * Bill.Amount
from FxRate
where FxRate.RateDate = Bill.BillDate
Dans cette mise à jour toutes les lignes qui ont une entrée pour cette date particulière obtenir les nouvelles données de reportingcurrency. Puisque la table de Bill peut avoir plusieurs rangées éligibles pour la mise à jour, j'ai le problème suivant:
Pour les lignes où il n'y avait aucune entrée dans la table de FxRate (pour cette date), le ReportingCurrency devient NULL. Je veux revenir à la nearest <= RateDate
et ramasser le taux de change.Est-ce possible en utilisant des modifications dans la même déclaration de mise à jour ou une autre méthode efficace? (Je veux éviter un curseur).
D'oh. Corrigé une erreur stupide dans ma réponse. – Tomalak