繁体   English   中英

MS Access SQL-每个顾问ID的最新记录

[英]MS Access SQL - Most Recent Record for Each Consultant ID

我花了一些时间在StackOverflow上寻找这个答案,并尝试了很多这样的解决方案,但是没有运气。 我觉得自己缺少一些小东西,但无法解决。 注意-学习SQL并使用Access,因为这是工作方式。

我有2个表,其中1个表具有顾问信息(列:顾问ID,名字,姓氏,活动(是或否复选框)。第二个表具有其每周编号( 列: AutoGenID,顾问ID,WeekOf(日期) ,FullService,咨询,分类,重新分配,RecruitmentSrvs),并将它们加入到ConsultantID(主键)中

我建立了一个简单的查询来联接2个表,并仅在qry_Join中显示活动顾问的所有结果(任何未标记为活动的顾问都不会在此查询中显示)qry_Join返回顾问ID,名字和姓氏(来自tbl_Consultants)和然后是tbl_WeeklyNumbers中的WeekOf(日期),FullService,咨询,分类,重新分配,RecruitmentSrvs。

题:

我想查询一个仅显示每个顾问最近的WeekOf(日期)条目的查询。

问题:

我正在使用的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)

只需将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)
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

您的查询中的问题是,下面的查询给出了整个表中的最大日期。 且该最大ID仅匹配一名顾问。 所以你得到一排

 WeekOf = (SELECT MAX(WeekOf) FROM qry_Join)

以下查询将提供每个顾问的最长时间。 因此,您可以加入最长日期和顾问ID,以获取每个顾问在其最新休假期间的详细信息

SELECT MAX(WeekOf) maxwkof ,ConsultantID cid
              FROM qry_Join 
              GROUP BY ConsultantID

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM