MS Access错误 - 执行查询时除以零

时间:2017-01-02 20:11:35

标签: ms-access-2013

我正在使用交叉表查询来计算一对数字的百分比,并使用Make查询将结果放入不同的表中。

源数据是这样的:

ITEMS    |PAIRS    |VAL
Element1 |dividend |43
Element1 |divisor  |33
Element2 |dividend |65
Element3 |dividend |73 
Element4 |dividend |32
Element4 |divisor  |23
Element3 |divisor  |49

请注意:在实际情况中,完全有可能缺少两个元素中的一个(在这种情况下,Element2的除数部分)。

以下是我如何使用Crosstab查询(名为QCross)来克服“溢出”错误。

TRANSFORM Sum(TRawData.Val) AS SumOfVAL
SELECT TRawData.ITEMS, IIf(IsError(Sum(IIf(TRawData.[PAIRS]='dividend', TRawData.[VAL],0))/Sum(IIf(TRawData.[PAIRS]='divisor',TRawData.[VAL],0))),0,Sum(IIf(TRawData.[PAIRS]='dividend',TRawData.[VAL],0))/Sum(IIf(TRawData.[PAIRS]='divisor',TRawData.[VAL],0))) AS MYRES
FROM TRawData
GROUP BY TRawData.ITEMS 
PIVOT TRawData.PAIRS;

这是Make查询

SELECT QCross.ITEMS, QCross.MYRES INTO TOutcome
FROM QCross;

交叉表查询运行良好,但是当执行Make查询(!运行)时,我正在处理'除零'错误。

任何人都可以帮我理解错误的位置吗?

1 个答案:

答案 0 :(得分:0)

你的代码理解起来不是很快,但是一般的方法是检查除数是否为零,如果是,则分别用0和1代替被除数和除数来获得有效除法和结果0:

result = IIf(divisor = 0, 0, dividend) / IIf(divisor = 0, 1, divisor)