У меня есть таблица активности, которая выглядит следующим образом:SQL Server - отработать дату, что расчет суммы достигает определенного значения
activity_id int
activity_client_id int
activity_type_id int
activity_start_date datetime
activity_end_date datetime
Одна запись для каждого экземпляра клиента, осуществляющего деятельность. Например, сегодня они могут иметь записи активности, которая имеет activity_start_date of
'03 -JUN-2015 09:00:00' и activity_end_date of
'03 -JUN-2015 11:30:00'
Так, используя эту таблицу , мы можем составить до скольких минут активности клиент выполнил, делая это:
select client_id,
sum(DATEDIFF(MINUTE, activity_start_date , activity_end_date)) as total_minutes
from activity
group by client_id
Вот хитрые немного: мне нужно, чтобы выполнить запрос, который покажет дату, когда каждый клиент достиг в общей сложности 300 минут деятельности ,
Я рассматриваю возможность создания хранимой процедуры, которая проходит через каждый клиент, сохраняя подсчет количества минут активности. Когда оно достигает 300 минут, процедура обновляет столбец в другой таблице, записывая дату.
Однако мне интересно, могу ли я достичь результатов «на лету» с помощью запроса выбора вместо того, чтобы запускать хранимую процедуру?
Редактировать: В соответствии с просьбой я дам вам некоторые примеры данных, чтобы уточнить, чего я пытаюсь достичь. Ниже мы видим записи для client_id 112. Вопрос в том, на какой срок клиент выполнил 300 минут (5 часов) общей активности? Для этого клиента ответ будет 03/06/2015
+-------------+----------------------+---------------------+-------------------+
| activity_id | activity_client_id | activity_start_date | activity_end_date |
+-------------+----------------------+---------------------+-------------------+
| 112434 | 112 | 01/06/2015 09:00 | 01/06/2015 11:00 |
| 112490 | 112 | 02/06/2015 12:00 | 02/06/2015 16:00 |
| 112688 | 112 | 03/06/2015 09:00 | 03/06/2015 16:00 |
| 112998 | 112 | 04/06/2015 09:00 | 04/06/2015 10:00 |
+-------------+----------------------+---------------------+-------------------+
Таким образом, используя оператор выбора, как бы мы работали это? Я могу решить, как это сделать в хранимой процедуре, используя цикл, но я бы предпочел просто иметь инструкцию select.
Можете ли вы предоставить образцы данных и желаемые результаты, чтобы мы правильно поняли вопрос? –
Я добавил примеры данных на мой вопрос сейчас. – Brian
Какая у вас версия SQL Server? – dnoeth