基于另一个表的Microsoft Access多个条件

时间:2018-06-25 17:41:44

标签: sql ms-access

我正在使用MS Access中的数据库。 我有一个具有不同类别(条件)的表(表A) 我有另一个表(表B),其中我必须基于两个类别(年和金额)从表A中提取值。 例如, 在表B中,费用为$ 15,000,因此我们转到表A,查找从2018年开始的意外费用(介于$ 0- $ 20,000之间),并报告了25%的意外费用。

有办法解决吗?我一直在绞尽脑汁尝试使用嵌套的“ IIF”和“ AND”功能,但我无法弄清楚

Table A

Table B

3 个答案:

答案 0 :(得分:1)

将两个表都添加到查询中。 加入C_YEAR。 使用BETWEEN AND可以获取适当的范围,从而获取适当的意外事件。 像这样:

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;

答案 1 :(得分:0)

似乎所有年份的应急率都相同:

  • $ 0至$ 20,000之间的值的25%
  • 对于20,001美元至200,000美元之间的价格,收取15%的费用
  • 对于200,000美元到100,000美元之间的价格,收取10%的费用

是否总是这种情况,还是仅基于您使用的示例数据?

您是否有可能拥有成本> $ 100,000,000的数据?如果是这样,应该如何处理数据?

我只是想知道是否有更好的方法来表示您的应急率规则。否则,我同意Rene关于加入表格并添加WHERE条件以获得所需价格的意见。我还要补充一点,因为您将始终从查询中提取汇率,因此不需要Table B上的实际字段来存储意外费用。

答案 2 :(得分:0)

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])