У меня есть таблица рынка (#Market), например:
Для каждой даты поставки рынка мне нужно генерировать даты до следующая дата поставки этого рынка. Желаемый результат должен быть таким, как показано ниже:
Я попытался получить календарные даты, основанные на максимальном и минимальном диапазоне дат для всех рынков, а затем попытался сопоставить даты с рыночными датами доставки.
Календарные даты (#Calendar) генерируются следующим образом:
Date
2020-03-01
2020-03-02
2020-03-03
2020-03-04
2020-03-05
2020-03-06
2020-03-07
2020-03-08
2020-03-09
2020-03-10
2020-03-11
2020-03-12
2020-03-13
2020-03-14
2020-03-15
Но я не смог найти способ сравнить календарную таблицу с таблицу Market и получите даты между последовательными строками для каждой даты поставки и рынка. Приведенное ниже перекрестное соединение дает мне все даты после даты доставки sprcifi c, но не может быть ограничено до следующей даты поставки для этого рынка.
select * from #Calendar c
cross join #Market m
where date>=[Delivery Date]
order by marketid,[Delivery Date]
Есть ли способ ограничить эти даты непосредственно перед следующая дата поставки для определенного c рынка?