VB6 / VBA ADO LEFT ПРИСОЕДИНЯЙТЕСЬ К диапазону дат - PullRequest
0 голосов
/ 05 января 2019

У меня есть основная таблица (T1) с 3 столбцами: Product, Qty, PurchaseDate

Например:

MouseFX, 13, 24/12/2015

Затем вспомогательная таблица (T2) с 3 столбцами: Product, UnitPrice, FromDate.

Один и тот же продукт может иметь более одной строки в T2 в зависимости от того, когда обновлена ​​UnitPrice: -

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)

Я предполагаю, что это должно быть сделано с левым соединением

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

Я бы хотел опубликовать код, но понятия не имею. В Excel / VBA я бы использовал Vlookup с четвертым параметром # 0

1 Ответ

0 голосов
/ 05 января 2019

Вы можете использовать коррелированный подзапрос:

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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...