簡體   English   中英

Informix除以零錯誤

[英]Informix divide by zero error

我有一個查詢錯誤除以零除錯誤。 我已經隔離了查詢中哪些錯誤的部分,並嘗試使用NVL進行修復,但進展不順利,有人可以發現我的錯誤嗎?

select  warehouse.ware_code,
    warehouse.desc_text,
    maingrp.maingrp_code,
    maingrp.desc_text,
    prodgrp.prodgrp_code,
    prodgrp.desc_text,
    left(product.part_code,7) Parent_Product_code,
    product.part_code,
    product.desc_text,
    sum(salesstat.order_qty - salesstat.return_qty) Total_Sales,
    sum((salesstat.order_qty - salesstat.return_qty) / 6) Average_Weekly_Sales,
    sum(((salesstat.order_qty - salesstat.return_qty) / 6) * 4) Average_Monthly_Sales,
    '??' Note,
    sum(prodstatus.onhand_qty) Stock_On_Hand,
    sum(orderstat.order_qty - orderstat.cancel_qty) Outstanding_orders,
    sum(prodstatus.onhand_qty - (orderstat.order_qty - orderstat.cancel_qty)) Stock_Available,
    --CASE
    --WHEN nvl(sum(salesstat.order_qty - salesstat.return_qty),0) = 0
    --  THEN 999
    --ELSE  sum(prodstatus.onhand_qty / ((salesstat.order_qty - salesstat.return_qty) / 6))
    --END as Weeks_Stock_Remaining,
    '??' Stock_ordered,
    '??' Production_date
from
    warehouse,
    warereptdetl,
    maingrp,
    prodgrp,
    product,
    prodstatus,
    salesstat,
    orderstat,
    Statint
where   warehouse.cmpy_code = maingrp.cmpy_code
and warehouse.cmpy_code = warereptdetl.cmpy_code
and warehouse.cmpy_code = prodgrp.cmpy_code
and warehouse.cmpy_code = product.cmpy_code
and warehouse.cmpy_code = salesstat.cmpy_code
and warehouse.cmpy_code = prodstatus.cmpy_code
and warehouse.cmpy_code = orderstat.cmpy_code
and warehouse.cmpy_code = statint.cmpy_code
and product.ware_code = prodstatus.ware_code
and product.ware_code = warehouse.ware_code
and product.ware_code = salesstat.ware_code
and product.ware_code = orderstat.ware_code
and product.ware_code = warereptdetl.ware_code
and product.part_code = salesstat.part_code
and product.part_code = orderstat.part_code
and product.part_code = prodstatus.part_code
and product.prodgrp_code = salesstat.prodgrp_code
and product.prodgrp_code = orderstat.prodgrp_code
and product.prodgrp_code = prodgrp.prodgrp_code
and product.maingrp_code = salesstat.maingrp_code
and product.maingrp_code = orderstat.maingrp_code
and product.maingrp_code = maingrp.maingrp_code
and salesstat.year_num = statint.year_num
and salesstat.int_num = statint.int_num
and salesstat.stat_type_code = statint.type_code
and orderstat.year_num = statint.year_num
and orderstat.int_num = statint.int_num
and orderstat.stat_type_code = statint.type_code
and warehouse.cmpy_code = 'AB'
and warereptdetl.warereptgrp_code = 'NSW'
and product.ware_code = 'HP1'
and product.status_ind <> 3
and left(product.part_code,2) = '21'
and statint.year_num = 2016
and statint.int_num between 29 AND 34
--and   statint.int_num = 29
and statint.type_code = 'WLY'
Group by 1,2,3,4,5,6,7,8,9

注釋掉的部分是我嘗試進行修復的地方,如果我注釋掉了,查詢運行正常(盡管有點慢)。

問題的第二部分是在沒有訪問我的數據庫的情況下您可能無法回答的問題,但是如果我運行查詢1、2甚至3周(statint.int_num),查詢將在不到1分鍾的時間內返回。 一旦我將其推遲6周(這就是我所需要的),查詢就需要40多分鍾才能返回結果。

我在查詢中的任何地方都看不到創建笛卡爾坐標的地方,但是盯着它看了這么長時間,可能會錯過它。

在您的案例陳述中:

sum(salesstat.order_qty - salesstat.return_qty)

可能非零,但個人

salesstat.order_qty - salesstat.return_qty

您要除以的值可能包含零。

編輯

澄清,

sum(prodstatus.onhand_qty / ((salesstat.order_qty - salesstat.return_qty) / 6))

可能在分母器中具有零,因為它是幾個分數的總和。 僅僅因為所有分母加起來都為非零數,並不意味着所有分母都為非零。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM