Циклическая процедура T-SQL - PullRequest
0 голосов
/ 05 октября 2011

У меня есть следующие данные:

ID       Date                 interval  interval_date            tot_activity  non-activity
22190   2011-09-27 00:00:00     1000    2011-09-27 10:00:00.000     265           15

У меня есть другая таблица с этими данными:

Date                        ID             Start                END               sched_non_activity     non_activity
10/3/2011 12:00:00 AM   HBLV-22267  10/3/2011 2:02:00 PM    10/3/2011 2:11:00 PM    540          

Теперь, в поле non_activity второй таблицы, я бы хотел, чтобы это былозначение из первой таблицы.Однако мне нужно захватить tot_activity - non_activity, где интервалы (с шагом 15 минут) из первой таблицы попадают в тот же период времени, что и начало и конец второй таблицы.

Я пробовал установитьпеременных и установки цикла, где для каждой строки он проверяет время начала по интервалу, но я понятия не имею, как вернуть переменную только с одной записью, так как я продолжаю получать ошибки, что моя переменная получает слишком много результатов.

Я пытался искать везде учебники, и я не могу найти что-нибудь, чтобы помочь мне.У кого-нибудь есть какие-нибудь указатели или руководства по зацикливанию, которыми они могут поделиться?

1 Ответ

2 голосов
/ 05 октября 2011

Вам нужно как-то сгенерировать даты окончания интервала; Я предполагаю, что в первой таблице всегда есть запись с интервалом записи 15 минут. В этом случае пример будет выглядеть так:

;WITH Intervals
AS
(SELECT
     Interval_date
     ,DATEADD(ms,840997,Interval_date) AS interval_end
    ,nonactivity
FROM A)

--Select query for Validation
--SELECT 
--  b.[Date]
--  ,b.ID 
--  ,b.Start
--  ,b.sched_non_activity
--  ,i.nonactivity
--FROM B
--JOIN Intervals AS i
--ON b.Start >= i.Interval_date 
--AND b.[END] <= i.interval_end 

UPDATE B
    SET non_activity = i.nonactivity
FROM  B
JOIN Intervals AS i
ON b.Start >= i.Interval_date   
AND b.[END] <= i.interval_end   

Очевидно, вам может понадобиться настроить это в зависимости от конкретных обстоятельств.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...