我花了一些时间在StackOverflow上寻找这个答案并尝试了一堆没有运气的解决方案。我觉得我错过了一些轻微的东西,但我无法解决它。注意 - 学习SQL并使用Access,因为这是工作的用途。
我有2个表,其中1个有顾问信息(列:顾问ID,名字,姓氏,活动(是或否复选框)。第二个表有他们的每周数字(列: AutoGenID,顾问ID,WeekOf(日期),FullService,咨询,分类,重新分配,RecruitmentSrvs)并在ConsultantID(主键)上加入
我构建了一个简单的查询来加入2个表并仅显示qry_Join中活跃顾问的所有结果(任何标记为未激活的人都不会在此查询中显示)qry_Join返回顾问ID,名字和&姓氏(来自tbl_Consultants),然后是来自tbl_WeeklyNumbers的WeekOf(Date),FullService,Consulting,Classified,Reallocations,RecruitmentSrvs。
问题:
我希望有一个查询,只显示每个顾问最近的WeekOf(Date)条目。
问题:
我正在使用的SQL如下,但我遇到的问题是,如果ConsultantID#的3,4,5,6和& 7使用10/11/2017日期,然后ConsultantID#8使用10/12/2017,查询将仅返回ConsultantID#8的行,因为它是最近的。我需要它仍然返回所有其他顾问最近的行,即使它们是ConsultantID#8s之前的日期
SQL:
SELECT ConsultantID, FirstName, WeekOf, USFullService, USConsulting, Classified, Reallocations, RecruitmentSrvs
FROM qry_Join
Where WeekOf = (SELECT MAX(WeekOf) FROM qry_Join)
答案 0 :(得分:1)
只需将ConsultantID传递给子查询:
SELECT ConsultantID, FirstName, WeekOf, USFullService, USConsulting, Classified, Reallocations, RecruitmentSrvs
FROM qry_Join q
Where WeekOf = (SELECT MAX(s.WeekOf) FROM qry_Join s WHERE s.ConsultantID = q.ConsultantID)
答案 1 :(得分:1)
SELECT ConsultantID,
FirstName,
WeekOf,
USFullService,
USConsulting,
Classified,
Reallocations,
RecruitmentSrvs
FROM qry_Join INNER JOIN
(SELECT MAX(WeekOf) maxwkof ,ConsultantID cid
FROM qry_Join
GROUP BY ConsultantID )
ON ConsultantID = cid
WHERE maxwkof = WeekOf
您的查询中的问题是,以下查询提供整个表中的最大日期。而且最大内容只匹配一名顾问。所以你得到一行
WeekOf = (SELECT MAX(WeekOf) FROM qry_Join)
以下查询将给出每位顾问的最长日期。因此,您可以加入最长日期和顾问ID,以获取最新周末
中每位顾问的详细信息SELECT MAX(WeekOf) maxwkof ,ConsultantID cid
FROM qry_Join
GROUP BY ConsultantID