Я пытаюсь найти подходящее название для моего вопроса, и до сих пор было 30 минут попытки ... :) До сих пор у меня есть следующий примерSQL: Создать новые группы диапазонов дат из диапазона дат
DateFrom DateTo Amount
2015/01/01 2015/08/31 1$
2015/01/01 2015/12/31 3$
2015/08/01 2015/12/31 7$
- Для первой линии мы получаем, что мы имеем 0,125 $/месяц (1 $/8 месяцев)
- Для 2-й линии, мы получаем, что мы имеем 0,25 $/месяц (3 $/12 месяцев)
- Для трехмерной линии мы получаем, что у нас есть 1,4 $/месяц (7 $/5 месяцев)
Учитывая вышеизложенное, мы хотели бы создать новую группу диапазонов дат, чтобы иметь суммы сумм. Что-то вроде результатов ниже:
DateFrom DateTo Amount
2015/01/01 2015/07/31 (0.125$+0.25$)*7 =2.625$
2015/08/01 2015/08/31 (1.4$+0.125$+0.25$)*1 =1.775$
2015/09/01 2015/12/31 (1.4$+0.25$)*4 =6.6$
Сумма вышеперечисленного составляет 11 $, как и исходные данные. Результат, который мы хотим, на самом деле представляет собой сумму суммы за уникальную группу диапазонов дат.
Этого можно достичь с помощью SQL?
Привет! Спасибо за отзыв! Использование CTE и нарушение диапазонов в месяцах - хороший подход. Однако мы должны рассмотреть диапазоны, которые перекрываются для суммирования сумм. В вашем случае, насколько я понимаю, результаты показывают две группы: 2015/01/01 - 2015/07/31 и 2015/08/01 - 2015/12/31, тогда как в качестве дополнительной группы должна быть перекрывающиеся диапазоны для 2015/08/01 - 2015/08/31 :) Я попытаюсь взять это отсюда, используя ваш подход, чтобы достичь результата :) Еще раз спасибо за немедленный ответ! –
Я тебя не понимаю. Мой скрипт возвращает три группы. Точно так же, как в вашем запросе. –
Прошу прощения, Слава! Это была моя ошибка, она работает, как вы сказали! :) –