У меня есть таблица с календарем и таблица со ставками. В таблице со ставками нет значений для дней в выходные. Я пытаюсь присоединиться к этим двум, чтобы иметь таблицу, в которой есть ставки на все дни, и мне нужно, чтобы ставки на выходных были последними доступными ставками. Вместо этого он показывает значения NULL, как если бы вы выполняли левое соединение, а запись не существует, она должна просто принимать последнее доступное значение, повторяя предыдущее значение.
У меня есть приведенный ниже код, который работает, но для обработки 7 397 строк требуется 2 минуты, что слишком долго.
Кто-нибудь знает более быстрый способ получить такие же результаты?
SELECT
c.CalendarID,
MAX(r.RateID)
FROM Dim_Calendar c
LEFT JOIN Dim_Rates r ON r.RateDate <= c.CalendarID
То, что я получаю без <= и просто =, выглядит следующим образом </p>
CalendarID | RateID
20131001 | 2
20131002 | 3
20131003 | 4
20131004 | 5
20131005 | NULL
20131006 | NULL
20131007 | 6
И это желаемая таблица:
CalendarID | RateID
20131001 | 2
20131002 | 3
20131003 | 4
20131004 | 5
20131005 | 5
20131006 | 5
20131007 | 6