В Microsoft SQL Server существует таблица с идентификатором записи, датой начала, датой окончания и количеством.
Идея состоит в том, что для каждой записи количество / общее количество дней в диапазоне = ежедневное количество.
Учитывая, что существует таблица, содержащая все возможные даты, как я могу сгенерировать набор результатов в SQL Server, чтобы он выглядел как в следующем примере?
EX:
RecordID | Start Date | End Date | Quantity
1 | 1/1/2010 | 1/5/2010 | 30000
2 | 1/3/2010 | 1/9/2010 | 20000
3 | 1/1/2010 | 1/7/2010 | 10000
Results as
1 | 1/1/2010 | QTY (I can do the math easy, just need the dates view)
1 | 1/2/2010 |
1 | 1/3/2010 |
1 | 1/4/2010 |
1 | 1/3/2010 |
2 | 1/4/2010 |
2 | 1/5/2010 |
2 | 1/6/2010 |
2 | 1/7/2010 |
2 | 1/8/2010 |
2 | 1/9/2010 |
3 | 1/1/2010 |
3 | 1/2/2010 |
3 | 1/3/2010 |
3 | 1/4/2010 |
3 | 1/5/2010 |
3 | 1/6/2010 |
3 | 1/7/2010 |
Группировка по датам, которые я мог получить, затем получал сумму в тот день, однако окончательный набор результатов не может быть агрегирован из-за пользовательских фильтров, которые могут исключить некоторые из этих записей в будущем.
EDIT
Для пояснения, это всего лишь образец. Фильтры не имеют значения, так как я могу присоединиться к стороне, чтобы узнать подробности, связанные с идентификатором записи в результатах.
Реальные данные содержат N записей, которые увеличиваются еженедельно, даты никогда не совпадают. Может быть 2000 записей с разными датами начала и окончания ... Это то, для чего я хочу создать представление. Я могу присоединиться к данным и сделать то, что мне нужно
Я должен также упомянуть, что это для прошлых, настоящих и будущих данных. Я хотел бы избавиться от временной таблицы дат. Я использовал рекурсивный запрос, чтобы получить все даты, которые существуют в течение 50 лет, но это превышает пределы MAXRECURSION для представления, которое я не могу использовать.