2014-09-23 3 views
0

SQL에 익숙하지 않고 다음을 수행 할 수 있는지 궁금합니다.SQL Server 날짜 시간이있는 곳에서의 총 시간 계산

SQL Server 2012를 사용하여 지정된 엔티티가 한 위치에서 보낸 총 시간 (분)을 찾고 싶습니다. 특정 엔티티에 대해 여러 위치에 여러 항목이있을 수 있으므로 하루 동안 여러 번 시간을 들여서 특정 위치에 대해 소비 한 총 시간을 분당으로 찾고 싶습니다.

이 테이블에는 StarttimeEndtime을 나타내는 두 개의 datetime 열이 위치 ID 및 엔티티 ID와 함께 있습니다.

하나의 이벤트에 대해 StarttimeEndtime 사이의 시간차를 계산할 수있는 방법을 찾았지만 총 시간으로 표시 될 위치의 모든 이벤트에 대해 합계를 계산하려고합니다.

나는 더 이상 정보를 제공 할 필요가 있으면 알려 주시기 바랍니다

+0

가 여러 위치를 하시겠습니까 것 또는 (사무실 자체 같은) 하나 (다른 사무실의 영역 등)? 후자의 경우 최소 datetime을 시작 시간으로 사용하고 최대 종료 시간은 위치를 떠난 시간으로 사용할 수 있습니다. 첫 번째 경우에는 마킹을 원하는 각 위치별로 그룹화하여이 작업을 수행해야합니다. –

답변

2

당신이 할 필요가 아래로, 기업은 시간을 보냈다 위치 사이의 날짜 차이를 계산하는 것입니다

SELECT 
* 
FROM MyTable 

결과

Starttime    Endtime     LocationID EntityID 
2014-09-23 14:07:43  2014-09-23 16:07:43  2   2 
2014-09-23 14:09:03  2014-09-23 20:09:03  3   2 
2014-09-23 14:09:51  2014-09-23 21:09:51  8   2 
2014-09-23 14:15:10  2014-09-23 21:15:10  8   3 
2014-09-23 14:15:16  2014-09-23 17:15:16  8   3 
2014-09-23 14:15:23  2014-09-23 22:15:23  4   3 
2014-09-23 14:15:32  2014-09-23 15:15:32  5   3 
2014-09-23 14:06:26  2014-09-23 14:06:26  1   2 

원하는 결과

를 얻기 위해 아래 쿼리를 사용하여 값
SELECT 
    DATEDIFF(MINUTE, MIN(Starttime), MAX(Endtime)) TotalTimeSpentInMinutes, 
    LocationID 
FROM MyTable 
WHERE EntityID = 2 
GROUP BY LocationID 

결과 값은

TotalTimeSpentInMinutes LocationID 
0      1 
120      2 
360      3 
420      8 
+0

대단히 감사합니다. 완벽하게 작동했습니다. 다른 모든 분들께도 큰 도움을 주심에 감사드립니다. – Zuzana

1
select LocationId , SUM(DATEDIFF(MINUTE, StartTime,EndTime)) 
from locationdatetime 
group by LocationId 

enter image description here