Правильно, я не делаю все это для вас, но это даст вам возможность. Я бы создал таблицу с строкой данных за каждый час. В этом случае у меня будет флаг, показывающий, является ли это рабочим часом или нет, что-то вроде этого;
CREATE TABLE #DateTable (Time_Stamp datetime, Working_Hour int)
INSERT INTO #DateTable (Time_Stamp, Working_Hour)
VALUES
('2016-12-05 14:00:00',1)
,('2016-12-05 15:00:00',1)
,('2016-12-05 16:00:00',1)
,('2016-12-05 17:00:00',0)
,('2016-12-05 18:00:00',0)
,('2016-12-05 19:00:00',0)
,('2016-12-05 20:00:00',0)
,('2016-12-05 21:00:00',0)
,('2016-12-05 22:00:00',0)
,('2016-12-05 23:00:00',0)
,('2016-12-05 00:00:00',0)
,('2016-12-06 01:00:00',0)
,('2016-12-06 02:00:00',0)
,('2016-12-06 03:00:00',0)
,('2016-12-06 04:00:00',0)
,('2016-12-06 05:00:00',0)
,('2016-12-06 06:00:00',0)
,('2016-12-06 07:00:00',0)
,('2016-12-06 08:00:00',0)
,('2016-12-06 09:00:00',0)
,('2016-12-06 10:00:00',0)
,('2016-12-06 11:00:00',0)
,('2016-12-06 12:00:00',1)
,('2016-12-06 13:00:00',1)
,('2016-12-06 14:00:00',1)
,('2016-12-06 15:00:00',1)
Образец списка вызовов;
CREATE TABLE #Calls (Call_ID int, StartDate datetime, EndDate datetime)
INSERT INTO #Calls (Call_ID, StartDate, EndDate)
VALUES
(1,'2016-12-05 14:00:00','2016-12-06 14:00:00')
,(2,'2016-12-05 15:00:00','2016-12-06 14:00:00')
,(3,'2016-12-05 16:00:00','2016-12-06 14:00:00')
Таким образом, вы можете присоединиться к этому, используя две даты и суммировать количество рабочих часов между ними, например:
SELECT
c.Call_ID
,SUM(dt.Working_Hour) Working_Hour
FROM #Calls c
JOIN #DateTable dt
ON dt.Time_Stamp BETWEEN c.StartDate AND c.EndDate
GROUP BY c.Call_ID
Результат;
Call_ID Working_Hour
1 6
2 5
3 4
Если вы указали таблицу даты в Google, существует множество примеров, которые помогут вам заполнить таблицу дат.
Что вы исследовали, примерил свой, и не нашел, что он не работает? Пока эта статья не показывает никаких усилий с вашей стороны. – dfundako
Можете ли вы опубликовать то, что вы на самом деле пытались сделать? Если у вас есть что-то в этом роде, мы можем попытаться помочь вам? :) –
Где твоя попытка? Мы можем помочь вам исправить ваш запрос, но мы не создаем запрос для вас. Вы даже проводите исследование? В Интернете много примеров. – Eric