Как мне написать запрос в доступе, чтобы обновить столбец на основе значений 2 других столбцов? - PullRequest
0 голосов
/ 29 апреля 2020

Я использую доступ для обновления таблицы (не по выбору). Таблица выглядит следующим образом:

sample table

Я хочу заполнить последний столбец («Правило 102 или Правило 103») с помощью

  • «Только для Reg 102», если только несоответствие Reg 102 появляется в столбце «Правила для несоответствия» для каждого идентификатора проверки,
  • «Только для Reg 103», если появляется только несоответствие Reg 103 в столбце «Регулирование несоответствия» для каждого идентификатора проверки
  • «Рег. 102 и 103», если появляются оба.

Итак, на рисунке выше, есть 3 проверки - первая проверка (1-JHHK9) будет проводиться только для Reg 102, а 2-я / 3-я (1-JJVAN, 1-JJVFR) - для Reg 102 и 103.

1 Ответ

1 голос
/ 29 апреля 2020

Вы можете использовать условное агрегирование и join:

select t.*,
       switch(cnt_102 > 0 and cnt_103 > 0, "Reg 102 and 103",
              cnt_102 > 0, "Reg 102 only",
              cnt_103 > 0, "Reg 103 only",
              1=1, "Neither"
             ) as reg_102_or_103
from t left join
     (select t.[inspection id],
             sum(iif([regulation for non-compliance] like "*Reg102*", 1, 0)) as cnt_102,
             sum(iif([regulation for non-compliance] like "*Reg102*", 1, 0)) as cnt_103
      from t
      group by [inspection id]
     ) as tt
     on t.[inspection id] = tt.[inspection id]
...