我正在使用交叉表查询来计算一对数字的百分比,并使用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查询(!运行)时,我正在处理'除零'错误。
任何人都可以帮我理解错误的位置吗?
答案 0 :(得分:0)
你的代码理解起来不是很快,但是一般的方法是检查除数是否为零,如果是,则分别用0和1代替被除数和除数来获得有效除法和结果0:
result = IIf(divisor = 0, 0, dividend) / IIf(divisor = 0, 1, divisor)