2012-11-28 3 views
1

특정 위치와 그룹에 도착한 시간을 시간대별로 찾는 쿼리가 있습니다. 전의. 0001-0559, 0600-1159, 1200-1759 및 1800-2359 내 쿼리 SQL은 ...Access SQL SumIf equivalent

SELECT tbl_2_trip_details_2012.arrival_id, 
     Hour([tbl_2_trip_details_2012] ! [arrive_ts]) AS [B-Hour], 
     Weekday([tbl_2_trip_details_2012] ! [arrive_ts]) AS [A-WeekDay#], 
     Month(tbl_2_trip_details_2012 ! arrive_ts)  AS [Month], 
     Count(tbl_2_trip_details_2012.trip_id)   AS CountOfTrip_ID 

FROM tbl_2_trip_details_2012 

WHERE (((tbl_2_trip_details_2012.arrival_id) = 84252114)) 

GROUP BY tbl_2_trip_details_2012.arrival_id, 
      Hour([tbl_2_trip_details_2012] ! [arrive_ts]), 
      Weekday([tbl_2_trip_details_2012] ! [arrive_ts]), 
      Month(tbl_2_trip_details_2012 ! arrive_ts) 

HAVING (((Month([tbl_2_trip_details_2012] ! [arrive_ts])) = 7)) 

ORDER BY Weekday([tbl_2_trip_details_2012] ! [arrive_ts]), 
      Hour(tbl_2_trip_details_2012 ! arrive_ts); 

이 형식의 쿼리는 필요한 정보처럼 보이는 모든 것을 가져옵니다. 주중의 요일까지 시간 범위를 합산하는 데 문제가 있습니다. CountOfTrip_ID의 합계를 "> 또는 <"으로 Criteria 필드에 입력하려고했습니다. 나는 Stack과 Access Help 기능에 파일을 다 써 버렸다. 이견있는 사람?

답변

3

시간을 6 시간 범위로 그룹화하려면 시간을 6으로 나누고 그 결과를 다시 6으로 곱하십시오. 그래서 그 결과는 다음과 같습니다

int(Hour([tbl_2_trip_details_2012] ! [arrive_ts])/6) * 6 AS [Hour-range] 

그런 다음, 0, 6, 12, & 18 (각 그룹의 시작)의 값을 얻을 것이다에 당신이 할 수있는 그룹.

+0

Tom, 나는 내 사무실로 돌아올 때 아침에이 기회를 줄 것이다. 감사! –

+0

Tom, 나는 Expression으로 코드를 삽입했으며 명시한대로 작동했습니다. 감사! –

+0

반갑습니다. 다행이 당신을 위해 일하고 있습니다. –