簡體   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