访问SQL SumIf等效

时间:2012-11-28 21:30:03

标签: sql ms-access

我有一个查询,我试图找到某个位置和按时间段分组的到达人数。恩。 0001-0559,0600-1159,1200-1759和1800-2359。我的查询SQL就是这个......

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帮助功能。有什么想法吗?

1 个答案:

答案 0 :(得分:3)

要将小时分为6小时范围,只需将小时数除以6,然后再将结果乘以6即可。所以它看起来像这样:

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

然后您将获得0,6,12和&的值。您可以分组的18(每组的开头)。