Вложенные критерии / фильтры в MS Access Query - PullRequest
1 голос
/ 17 июня 2019

Может ли кто-нибудь дать мне представление о том, как я могу выбирать / обновлять записи в Access, основываясь на данных и критериях ниже?

Справочная информация: Headcount=1 должно быть установлено для всех записей, за исключением записей с дублирующимися записями / ролями (ApptID). Для этих count(Headcount)>1 я должен установить Headcount=0 для записи с:

  1. Right(Empcode,5)<>Right(ApptID,5) и исправлено, т.е. 100005-300678
  2. Если оба Cont, просто запись Right(Empcode,5)<>Right(ApptID,5), т.е. 100006-300583
  3. Если 2 аналогичные записи APPTID не содержат empcode, который имеет 5 цифр, аналогичных ApptID (т. Е. 100007), и обе являются фиксированными или продолженными, в зависимости от того, какое из 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";

Отсюда я не знаю, как поступить со вторым и третьим, поскольку все мои попытки приводят к включению других записей.

...