2012-11-28 61 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); 

以这种格式的查询会提取所有看起来像我需要的信息。按星期几计算时间范围时,我遇到了问题。我一直试图在Criteria字段中使用“>或<”执行CountOfTrip_ID的总和。我已经用尽了堆栈中的文件和Access帮助功能。有什么想法吗?

回答

3

若要将您的小时分组到6个小时范围内,只需将小时的整数乘以6再将结果乘以6即可。因此,它应该是这样的:

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

然后,您将得到0,6,12,18 &(每组的开始)的值,你可以在群组。

+0

汤姆,当我回到我的办公室时,我会在早上给你一个镜头。谢谢! –

+0

Tom,我已经将该代码作为表达式插入,并且按照您的说法工作。谢谢! –

+0

不客气。很高兴它为你工作。 –