我正在尝试使用Excel VBA使用SQL语句从访问数据库中提取记录。 将Excel VBA与SQL SELECT语句一起使用我可以使用WHERE子句提取记录。 现在我试图从我的数据库中选择记录对,但我不知道如何实现这一点。
访问表:(注意:表中还有其他列)
n
我想根据名称选择对
E.g。
Date DTE Name Sc
41668 AAA425 AdamJ 98
41669 ABC500 JohnB 85
41689 ADE450 AdamJ 56
41789 AFF350 AdamJ 74
然后我想基于第一个DTE过滤/选择
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
有人能指出我如何实现这个目标吗?
答案 0 :(得分:0)
我不完全明白你想做什么(或更多),但你可以用这样的事情做到:
选择您的主要驾驶记录:
select max(date),
name
from NameDates (or whatever you called your table)
group by name;
这样就可以为每个人提供最新记录。
现在将该选择加入同一个表中的另一个选择:
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;
检查它在这里工作:
答案 1 :(得分:0)
是的,可以使用ACCESS SQl进行ACCESS,如下所示:
假设您的数据保存在NamesDates表中。
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;
您根据名称匹配记录的请求是不常见的,因为名称通常不是唯一的。通常,该人的唯一标识符将用于将记录与创建的对匹配。
PS。我怀疑你需要使用" min(date)"不是"最大(日期)"
此外,听起来您需要在主查询和子查询上添加WHERE子句,以将日期限制为您提到的90天。
哈维