У меня есть вопрос SQL, который я не смог решить какое-то время. Я повсюду смотрел без везения. Я потратил много времени на просмотр StackOverflow и подумал, что кто-то здесь может помочь.Расчет начальной даты в нескольких диапазонах дат
Мне нужно определить начальную дату x число дней назад на нескольких диапазонах. Например:
Range || Ending Date of Range (date) || Number of Days in Range (int)
1 || 2/20/2013 || 44
2 || 9/5/2014 || 75
3 || 3/25/2016 || 20
У меня есть 3 диапазона продолжительностью различного времени с датой окончания для каждого. Диапазоны дат никогда не перекрываются. Мне нужно подсчитать конкретный номер, скажем, 100 дней, обратно в диапазон. В приведенном выше примере. Ответ будет 2/15/13.
20 + 75 = 95 дней. 100 - 95 = 5 дней. Таким образом, 5 дней назад с 2/20/2013 - 2/15/2013.
Кто-нибудь знает, как я могу это сделать в SQL-запросе?
Я считаю, что лучший способ заключается в объединении диапазонов до тех пор, пока сумма не пройдёт нужное число (100), а затем не примет разницу (95) и вычитает ее из (100), которая дала бы мне (5) просто простая математика. Я мог бы легко сделать это с любым языком программирования, но с SQL, с которым я борюсь.
Действительно, мне нужна помощь с приложением (5) и правильной датой окончания (20.02.2013). Оттуда я смогу обработать математику.
Я был бы признателен за любые рекомендации относительно того, как я мог бы это сделать. Заранее спасибо.
Какие СУБД вы используете? Пожалуйста, пометьте его, поскольку каждый может иметь свои собственные функции (особенно, когда речь заходит о датах). –
Я не могу понять это. почему вы оставили диапазон 1? Я думаю, вам нужно лучше объяснить логику здесь. Почему вы вычитаете 5 из диапазона 1? без разницы. –
Том - DB2 ... Рикардо - Точка должна отсчитывать назад, чтобы добраться до 100. Диапазон дат 3 + Диапазон дат 2 = 95 Осталось 5, затем я могу пересчитать 5 дней в этом диапазоне. Извините, если я не понимаю. – jackfish