Sql server SQL Server在最近的汇率上左联接

Sql server SQL Server在最近的汇率上左联接,sql-server,left-join,Sql Server,Left Join,我的T-SQL查询遇到了问题。我有仓库数据库,我想将货币汇率添加到我的交易中,以查看欧元和美元的汇率 为此,我使用欧洲央行的汇率 我的查询如下所示: SELECT Companys.Companys_name, Warehouse_oper.Pavad_num, [Items]![Quantity]*[Items]![Price] AS Expr1, [Items]![Quantity]*[Items]![Price]*[Exchange_rates]![

我的T-SQL查询遇到了问题。我有仓库数据库,我想将货币汇率添加到我的交易中,以查看欧元和美元的汇率

为此,我使用欧洲央行的汇率

我的查询如下所示:

SELECT 
    Companys.Companys_name, 
    Warehouse_oper.Pavad_num, 
    [Items]![Quantity]*[Items]![Price] AS Expr1, 
    [Items]![Quantity]*[Items]![Price]*[Exchange_rates]![USD] AS Expr2
FROM 
    (Companys 
LEFT JOIN 
    (Exchange_rates 
RIGHT JOIN 
    Warehouse_oper ON Exchange_rates.Date = Warehouse_oper.Date) 
    ON Companys.Companys_num_d_b = Warehouse_oper.Companys_nr_d_b) 
LEFT JOIN 
    Items ON Warehouse_oper.Warehouse_oper_num_d_b = Items.Warehouse_oper_num_d_b;
抱歉,如果很难理解,因为我将所有变量翻译成了英语

无论如何,这个查询工作正常,如果LEFT JOIN Exchange\u rates RIGHT JOIN Warehouse\u oper ON Exchange\u rates.Date=Warehouse\u oper.Date,但银行在节假日不提供,那么在这些日期我有空值

我知道这个查询很混乱,但它是从Access到SELECT最新可用日期的,我如何编辑它

我试过:

LEFT JOIN 
    (Exchange_rates RIGHT JOIN Warehouse_oper ON 
(SELECT TOP 1 Exchange_rates.Date FROM Exchange_rates WHERE
 Exchange_rates.Date <= Warehouse_oper.Date) = Warehouse_oper.Date) 

但是没有成功。

请发布表汇率的完整模式-很可能您需要更改该表,以便在每个汇率记录上有一个开始/结束日期,以跨越丢失的日期,然后将您的联接更改为warehouse_oper.date>=Extange_rates.begindate和warehouse_oper.date表格汇率表格很简单:date | USD | RUB | GBP,因此没有什么真正的内容您有两个选择-更改表格以填充开始/结束日期,或编写CTE以填补空白,但我认为后者可能会影响更大数据集的性能。我也尝试过:左连接汇率右连接仓库操作汇率.Date使用请发布表汇率的完整模式-很可能您需要更改该表,以便在每个汇率记录上有一个开始/结束日期以跨越缺少的日期,然后将您的联接更改为warehouse_oper.date>=exhange_rates.begindate和warehouse_oper.date表格汇率表格很简单:date | USD | RUB | GBP,因此没有真正的内容您有两个选择-更改表格以填充开始/结束日期,或编写CTE以填补空白,但我认为后者可能会影响更大数据集的性能。问题是我也尝试过:左连接汇率右连接仓库在汇率上操作。日期使用