2014-02-16 75 views
0

我已经整理一个访问表两个日期之间获取数据,比如:1月1日之间,以1月31日SQL - 访问 - VBA

 
SellingID1 iTemID 1 ItemInTime11/01/2011 01:05:00 ItemOutTime11/01/2011 02:05:00 
SellingID2 iTemID 1 ItemInTime11/01/2011 02:05:00 ItemOutTime11/01/2011 02:15:00 
SellingID3 iTemID 1 ItemInTime11/01/2011 02:05:00 ItemOutTime11/01/2011 03:45:00 
SellingID4 iTemID 2 ItemInTime15/01/2011 02:05:00 ItemOutTime15/01/2011 03:05:00 
SellingID5 iTemID 2 ItemInTime15/01/2011 02:05:00 ItemOutTime15/01/2011 03:15:00 

我有多个记录中的这个日期,但我需要通过一个ItemID对它们进行分组,可能有多于3条记录具有相同的itemID,但我需要这些记录中的最短时间和最长时间,并且只输出一次ItemID,但时间应计算在单独的查询。

 
1 iTemID 1 ItemInTime 11/01/2011 01:05:00 ItemOutTime 11/01/2011 02:05:00 
2 iTemID 1 ItemInTime 11/01/2011 02:05:00 ItemOutTime 11/01/2011 02:15:00 
3 iTemID 1 ItemInTime 11/01/2011 02:05:00 ItemOutTime 11/01/2011 03:45:00 

以上三个数据应合并为一个如下。

 
iTemID 1 ItemInTime 11/01/2011 01:05:00 ItemOutTime 11/01/2011 03:45:00 

任何指导将真诚赞赏。提前致谢。

回答

0

您是否正在寻找?

SELECT ItemID, MIN(ItemInTime) ItemInTime, MAX(ItemOutTime) ItemOutTime 
    FROM table1 
GROUP BY ItemID; 

这里是SQLFiddle演示


在运行时发现的最小最大值后,有没有办法,我可以找出这些MAXTIME和mintime之间的区别.. 。对于每个ITEM?

使用DATEDIFF()函数,该函数

SELECT ItemID, MIN(ItemInTime) ItemInTime, MAX(ItemOutTime) ItemOutTime, 
     DATEDIFF("s", MIN(ItemInTime), MAX(ItemOutTime)) DiffInSec 
    FROM table1 
GROUP BY ItemID; 

这里是SQLFiddle演示

+0

感谢您的答复。有效。但是,我有一个后续问题......在运行时间中找到最小值最大值后,是否有一种方法可以找出这些最大值和最小值之间的差异...对于每个ITEM? ... 真的很感谢你的努力......谢谢。 – user3315282

+0

你很受欢迎。查看更新的答案。 – peterm

+0

非常感谢解决方案。 – user3315282