vb6 / vba ado左加入日期范围

时间:2019-01-05 20:43:10

标签: sql excel vba ms-access vb6

我有一个包含3列的主表(T1):产品,数量,购买日期

例如:

MouseFX, 13, 24/12/2015

然后创建一个包含3列的辅助表(T2):产品,单价,发件人日期。

根据更新单价的时间,同一产品在T2中可能有多个行:-

MouseFX, 12$, 24/12/2013
MouseFX, 13$, 23/1/2014
MouseFX, 15$, 2/3/2018

对于特定产品('MouseFX'),我需要使用以下命令从UnitPrice中检索T2

PurchaseDate (24/12/2015) > FromDate(23/1/2014) 
AND PurchaseDate< FromDate(2/3/2018)

我认为应该通过LEFT JOIN完成

SELECT T1.*, T2.UnitPrice from T1 LEFT JOIN T2 ON PurchaseDate ?????/?

我希望我可以发布一些代码,但没有任何想法。在Excel / VBA中,我会在第四个参数#0中使用Vlookup

1 个答案:

答案 0 :(得分:0)

您可以使用相关子查询:

SELECT T1.*,
       (SELECT TOP (1) T2.UnitPrice 
        FROM t2
        WHERE t2.product = t1.product AND
              t2.FromDate <= t1.PurchaseDate
        ORDER BY t1.FromDate DESC
       ) as T2.UnitPrice
FROM T1;

通常的做法是在第二个表中包含一个ToDate,因此它是2型维度,您可以在其中使用JOIN语法。