Попытка написать запрос, который проверит значение, полученное из ряда транзакций.
Таблица A содержит столбцы Code, Date, Value
, а таблица B содержит Code, Date, Value
.
Обе таблицы содержат несколько экземпляров одного и того же кода.
То, чего я пытаюсь добиться, - это получить каждую строку из таблицы A и присоединить к ней строку из таблицы B, в которой есть тот же элемент запаса, и это первая дата, которая меньше даты таблицы A.
, например
Таблица A
OC001, 2019-01-01, £10
Таблица B имеет
OC001, 2018-10-15, £6
OC001, 2018-11-30, £8
OC001, 2019-01-02, £11
Ожидаемый результат:
OC001, 2019-01-01, £10, OC001, 2018-11-30, £8
Поскольку 2018-11-30 ближе всего к 2019-01-01 и OC001 = OC001
Пробовал разные подходы к объединению, но достиг предела того, что я могу построить.
SELECT
r.Code,
cc.StockCode,
r.Date,
cc.InvDate
FROM tableA as r
JOIN tableB as cc ON r.Code = cc.StockCode AND r.Date >= cc.InvDate
ORDER BY r.Code, r.Date, cc.InvDate
Запрос работает по большей части, но он дублирует результаты, когда в таблице B. имеется более одного совпадающего результата.