MS Access: подсчитайте количество полей в записи, содержащих определенное значение, и используйте это количество в качестве значения по умолчанию для другого поля в той же записи

Пользователи импортируют серийный номер, затем они должны заполнить данные для имени ошибки. Каждый серийный номер может иметь не более 3 названий ошибок. Затем имена ошибок классифицируются как тип A или тип B.

Затем есть поле SumOfErrorTypeA и поле SumOfErrorTypeB. Пользователи вручную вводят сумму каждого типа ошибки для каждой записи, но наша команда должна автоматизировать это. Я пробовал IIF, Dcounts, математику VBA, но безрезультатно... Есть ли способ сделать это? Благодарю вас!

Record SerialNumber Error1Name Error1Type Error2Name Error2Type Error3Name Error3Type SumOfErrorTypeA SumOfErrorTypeB
1      111111111    Error1     Type B     Error2     Type A     Error3     Type A     2               1
2      222222222    Error1     Type A     Error2     Type A                           2               0
3      333333333    Error1     Type A                                                 1               0
4      444444444    No error                                                          0               0 

Пробовал IIF, DCounts, VBA, ничего не помогло.


person VeeEss    schedule 09.08.2018    source источник
comment
Эти данные явно не нормированы. Доступен ли нормализованный вариант этих данных?   -  person Erik A    schedule 09.08.2018
comment
Привет @ Эрик фон Асмут. спасибо за ответ... Я новичок, и мне пришлось гуглить, что такое нормализованные данные! я узнал что-то новое! спасибо! Ответ был дан, но спасибо, что заметили...   -  person VeeEss    schedule 09.08.2018


Ответы (1)


Вы можете рассчитать суммы:

select t.*,
       (iif(Error1Type = "A", 1, 0) +
        iif(Error2Type = "A", 1, 0) +
        iif(Error3Type = "A", 1, 0)
       ) as num_a,
       (iif(Error1Type = "B", 1, 0) +
        iif(Error2Type = "B", 1, 0) +
        iif(Error3Type = "B", 1, 0)
       ) as num_b
from t;

Я не уверен, что вы хотите делать со значениями, но это позволит вам рассчитать, какими они должны быть.

person Gordon Linoff    schedule 09.08.2018