Несколько критериев Microsoft Access на основе другой таблицы - PullRequest
0 голосов
/ 25 июня 2018

Я работаю с базой данных в MS Access. У меня есть таблица (таблица А) с разными категориями (критериями) У меня есть другая таблица (таблица B), где я должен извлечь значения из таблицы A на основе двух категорий (год и сумма). Например, Из таблицы B стоимость составляет 15 000 долл. США, поэтому мы переходим к таблице А и находим непредвиденные расходы на 2018 год, которые колеблются между 0 и 20 000 долл. США, и сообщаем, что непредвиденные расходы составляют 25%.

Есть ли способ пойти по этому поводу? Я ломал голову, пытаясь использовать вложенные функции «IIF» и «AND», но я не могу понять это

Table A

Table B

Ответы [ 3 ]

0 голосов
/ 25 июня 2018

Похоже, что показатели непредвиденных расходов для всех лет одинаковы:

  • 25% для значений от 0 до 20 000 долларов США
  • 15% для значений от 20 001 до 200 000 долларов США
  • 10% для значений между $ 200 000 и $ 100 000

Это всегда так или только на основе данных, которые вы используете?

Возможно ли, что вы 'Будут ли данные, где стоимость> 100 000 000 долларов?Если да, то как следует обрабатывать данные?

Мне просто интересно, не существует ли лучшего способа представить ваши правила уровня непредвиденных расходов.В противном случае я согласился бы с Рене присоединиться к столам и добавить условие WHERE, чтобы получить необходимые вам ставки.Я также добавил бы, что, поскольку вы всегда будете извлекать ставку из запроса, вам не нужно фактическое поле в Table B для хранения показателя непредвиденных расходов.

0 голосов
/ 25 июня 2018

Рассмотрим DLookUp в запросе UPDATE.Агрегат домена необходим для обновления запроса.

UPDATE tableB b
SET b.Contingency = DLookUp("CONTINGENCY", "tableA", "[C_YEAR] = " & b.[C_YEAR] &
                            " AND [MIN_VALUE] <= " & b.[COST] & " AND [MAX_VALUE] >= " &  b.[Cost])
0 голосов
/ 25 июня 2018

Добавьте обе таблицы в запрос.Присоединяйтесь к C_YEAR.Используйте МЕЖДУ И, чтобы получить соответствующий диапазон и, следовательно, соответствующее непредвиденное обстоятельство.Что-то вроде:

SELECT tableA.CONTINGENCY
FROM tableA INNER JOIN tableB ON tableA.C_YEAR = tableB.C_YEAR
WHERE tableB.COST BETWEEN tableA.MIN_VALUE AND tableA.MAX_VALUE;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...