У меня есть следующие данные в таблице:
Date ID Start END Duration_S Duration_A
9/12/2011 22216 9/12/2011 12:30:00 PM 9/12/2011 2:15:00 PM 6300 NULL
9/12/2011 22216 9/12/2011 2:30:00 PM 9/12/2011 2:39:00 PM 540 NULL
9/12/2011 22216 9/12/2011 5:20:00 PM 9/12/2011 5:50:00 PM 1800 NULL
Моя цель - обновить столбец Duration_A, в настоящее время нулевой.
Информация, которую я использую для получения этой информации, представляет собой таблицу, структурированную так:
ID Start_Time State End_Time State_Duration
22216 6/3/10 2:07:58 1 6/3/10 2:20:58 800
22216 6/3/10 2:21:58 2 6/3/10 2:25:55 52
22216 6/3/10 5:21:58 2 6/3/10 5:31:05 600
Чтобы обновить Duration_A, я должен суммировать длительность, содержащую определенные состояния (это не проблема), но проблема в том, что Start_Time и End_Time должны соответствовать Start и End моей первой таблицы. Вот что я делаю:
SELECT tblB.ID, SUM(tblB.StateDuration) AS Total, tblA.Start_Time,
tblA.End_Time
FROM
tblA INNER JOIN tblB ON tblB.Id = tblA.ID
tblB.Start_Time >= tblA.Start AND
tblB.End_Time <= tblA.End
WHERE STATE IN (1, 2, 3, 4, 5, 6, 7, 10, 11)
GROUP BY tblB.StateDuration, tblB.Id, tblA.Start_Time,
tblA.End_Time,tblB.End_Time,
tblB.Start_Time
Это дает мне первую продолжительность, когда время начала и окончания tblB совпадает с tblA, где я хочу получить сумму всех длительностей между этими временными рамками. Если мне не ясно, дайте мне знать.