MS Access查询中的嵌套条件/过滤器

时间:2019-06-17 03:34:16

标签: sql ms-access ms-access-2016

任何人都可以给我一些有关如何根据以下数据和条件在Access中选择/更新记录的想法吗?

背景:除具有重复记录/角色(由Headcount=1重复的记录)外,应为所有记录设置ApptID。对于那些count(Headcount)>1,我必须使用以下记录设置Headcount=0

  1. Right(Empcode,5)<>Right(ApptID,5)和固定值,即100005-300678
  2. 如果都连续,则仅Right(Empcode,5)<>Right(ApptID,5)记录即100006-300583
  3. 如果2个相似的APPTID记录中没有包含与ApptID相似的5位数字(即100007)的empcode,并且两者都是固定的或续的,则以每个FTE最低的将有Headcount=0,即100007-300295 / 100008-300419
    APPTID | EmpCode | FTE | Status | HEADCOUNT  

    100001 | 300001  | 1.0 | Cont   | 1  
    100002 | 300002  | 0.9 | Cont   | 1  
    100003 | 300003  | 0.8 | Fixed  | 1  
    100004 | 300004  | 1.0 | Cont   | 1  
    100005 | 300005  | 0.5 | Cont   | 1  
    100005 | 300678  | 0.5 | Fixed  | 1  
    100006 | 300006  | 0.4 | Cont   | 1   
    100006 | 300583  | 0.4 | Cont   | 1  
    100007 | 300295  | 0.4 | Fixed  | 1  
    100007 | 300385  | 0.6 | Fixed  | 1  
    100008 | 300419  | 0.4 | Cont   | 1  
    100008 | 300902  | 0.6 | Cont   | 1   

当前,首先在更新查询之前创建选择查询。我设法做到了第一个标准:

SELECT ApptID, EmpCode, FTE, Status, Headcount
FROM Staff S
WHERE S.ApptID in (
    Select Tmp.ApptID FROM Staff as Tmp 
    Group by Tmp.ApptID 
    Having Sum(Tmp.Headcount)>1)
AND RIGHT(S.ApptID,5)<>RIGHT(S.EmpCode,5)
AND S.Status="Fixed";

从这里开始,我不知道如何进行第二和第三,因为我的所有尝试都导致包含其他记录。

0 个答案:

没有答案