2017-01-02 28 views
0

クロス集計クエリを使用して数値の組からパーセンテージを計算し、その結果を別のテーブルに格納するために作成クエリを使用しています。MS Accessエラー - クエリ実行時に0で除算します。

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

ご注意:実際の状況では、二つの要素の一つは、(この場合には、エレメント2の除数の一部を)欠落していることは完全に可能である

ソース・データは、このようなものです。

ここでは、「オーバーフロー」エラーを克服するために、クロスタブクエリ(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; 

そして、これは、クロス集計クエリは、しかし、私はメイクのクエリが実行されるエラー「ゼロによる除算」(!ラン)で取り扱っております、うまくメイククエリ

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

取り組んでいます。

どこにエラーがあるのか​​理解できる人はいますか?

答えて

0

あなたはコードを理解するのが速いわけではありませんが、一般的な方法は、除数がゼロであるかどうかをチェックし、そうであれば0と1をそれぞれ被除数と除数に置き換えて有効な除算と結果0:

result = IIf(divisor = 0, 0, dividend)/IIf(divisor = 0, 1, divisor) 
関連する問題