Представьте себе таблицу с некоторыми позициями
LineItemID CountryID Date
1 China 6/26/2011
2 China 6/27/2011
3 US 3/21/2011
У меня также есть таблица с некоторыми показателями, поэтому:
CountryID ExchangeRateDate ExchangeRateDateTo Rate
US 1/1/2011 NULL 1
China 6/1/2011 6/13/2011 6.06
China 6/13/2011 6/26/2011 6.13
China 6/26/2011 NULL 6.26
Обратите внимание, что ставка для США не меняет ее простоставка 1 с NULL для ExchangeRateDateTo
.Я не могу присоединиться к таблицам по идентификатору страны. Моя проблема, например, заключается в том, как я могу присоединиться не только к идентификатору страны, но и использовать дату FirstTable со вторыми таблицами ExchangeRateDate / To, чтобы получить правильную дату.* Например, я не могу сказать
WHERE FirstTable.[Date] BETWEEN SecondTable.ExchangeRateDate AND SecondTable.ExchangeRateDateTo
Потому что, например, курс Китая становится нулевым (начинается с 26.06.2011 до NULL).
Так что в основном я ищутаким образом, что я получаю результат, например, из Китая по курсу 6.26
, потому что даты от 6 / 26-6 / 27.Курс 6,13 закончился прямо 6/26, поэтому он должен забрать новый курс.
Таким образом, мое присоединение будет к countryID
плюс использование диапазона дат для выбора правильного курса, в противном случае, если я толькоприсоединяясь к стране, вы можете видеть, что это приведет к декартовой системе.