2017-01-02 58 views
0

我正在使用交叉表查詢來計算一對數字和一個Make查詢以將結果放入另一個表中的百分比。MS訪問錯誤 - 執行查詢時除以

來源的數據是這樣的:

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)