Может ли кто-нибудь дать мне представление о том, как я могу выбирать / обновлять записи в Access, основываясь на данных и критериях ниже?
Справочная информация: Headcount=1
должно быть установлено для всех записей, за исключением записей с дублирующимися записями / ролями (ApptID
). Для этих count(Headcount)>1
я должен установить Headcount=0
для записи с:
Right(Empcode,5)<>Right(ApptID,5)
и исправлено, т.е. 100005-300678
- Если оба Cont, просто запись
Right(Empcode,5)<>Right(ApptID,5)
, т.е. 100006-300583
- Если 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";
Отсюда я не знаю, как поступить со вторым и третьим, поскольку все мои попытки приводят к включению других записей.