使用SQL从Access数据库中selectlogging对

我正在尝试使用Excel VBA使用SQL语句从访问数据库提取logging。 使用Excel VBA和SQL SELECT语句我可以使用WHERE子句提取logging。 现在我正试图从我的数据库中selectlogging的一对,但我不知道如何实现这一点。

访问表:(注意:表中还有其他列)

Date DTE Name Sc 41668 AAA425 AdamJ 98 41669 ABC500 JohnB 85 41689 ADE450 AdamJ 56 41789 AFF350 AdamJ 74 

我想根据名称select对

例如

 Date DTE Name Sc Date DTE Name Sc 41668 AAA425 AdamJ 98 41689 ADE450 AdamJ 56 41668 AAA425 AdamJ 98 41789 AFF350 AdamJ 74 41689 ADE450 AdamJ 56 41789 AFF350 AdamJ 74 

然后我想根据第一个DTE过滤/select

 Date DTE Name Sc Date DTE Name Sc 41668 AAA425 AdamJ 98 41689 ADE450 AdamJ 56 41668 AAA425 AdamJ 98 41789 AFF350 AdamJ 74 

任何人都可以指出我正确的方向,我怎么能做到这一点?

我不完全理解你想做什么(或者更多),但是你可以用这样的事情来做:

select你的主要驾驶logging:

 select max(date), name from NameDates (or whatever you called your table) group by name; 

所以这会给你每个人的最新logging。

现在joinselect从另一个select从同一个表中:

 with mainName as (select max(date) as main_date, name as main_name from NameDates (or whatever you called your table) group by name ) select main_date, main_name, date, name, sc from mainName, NamesDates where main_name = name and main_date != date; 

检查它在这里工作:

http://sqlfiddle.com/#!4/321b3/8

是的,这可以通过访问使用ACCESS SQl来完成,如下所示:

假设您的数据保存在表名称date中。

 select mainName.main_date, mainName.main_name, NamesDates.date, NamesDates.name, NamesDates.sc, NamesDates.StudentID from NamesDates LEFT JOIN (select max(date) as main_date, StudentID AS main_StudentID from NameDates group by StudentID ) AS mainName, ON mainName.main_StudentID = NamesDates.StudentID where mainName.main_date != NamesDates.date; 

根据名称匹配logging的请求是不正常的,因为名称通常不是唯一的。 通常和唯一的标识符将被用来匹配logging和创build的对。

PS。 我怀疑你将需要使用“最小(date)”而不是“最大(date)”

另外,听起来好像你需要在主查询和子查询中添加一个WHERE子句来限制date到你提到的90天。

哈维