select (qty_1-qty_2)/qty_2 from t_224_stadata where aaa= '689109585'其中(qty_1-qty_2)/qty_2都是按照用户输入自动在程序中生成的,也就是说字段不一定是这几个,那怎么处理可能出现的 除数为零的情况呢,(现在向除数为0时整个表达式的结果显示为"--"或直接显示结果为0

解决方案 »

  1.   

    select decode(qty_2,0,0,(qty_1-qty_2)/qty_2) from t_224_stadata where aaa= '689109585'
    select decode(qty_2,0,'除数为0',(qty_1-qty_2)/qty_2) from t_224_stadata where aaa= '689109585'
    你运行一下,很简单的
      

  2.   

    用decode()可以,但如果本来是带sum()的
    比如select CUS_ID sum((qty_1-qty_2)/qty_2) from t_224_stadata where aaa= '689109585'该怎么处理呢,我改成select CUS_ID decode(sum(quy_2),0,'除数为0',sum((qty_1-qty_2)/qty_2) from t_224_stadata where aaa= '689109585' group by CUS_ID   
    提示错误  非单组分组函数
      

  3.   

    select CUS_ID,max(decode(sum(quy_2),0,'除数为0',sum((qty_1-qty_2)/qty_2)) from t_224_stadata where aaa= '689109585' group by CUS_ID   
    按照group by分组时,除了cus_id外,其他的字段都要加上聚集函数的
      

  4.   

    简单的用函数nvl()、nvl2() 复杂的用case
    select (case when y=0 then '--' else to_char(x/y) end) as z from tab_name
      

  5.   

    用decode()可以,但如果本来是带sum()的
    比如select CUS_ID sum((qty_1-qty_2)/qty_2) from t_224_stadata where aaa= '689109585'该怎么处理呢,我改成select CUS_ID decode(sum(quy_2),0,'除数为0',sum((qty_1-qty_2)/qty_2) from t_224_stadata where aaa= '689109585' group by CUS_ID   
    提示错误  非单组分组函数
    --------------------------------------------------------
    楼主要更改一下思维方式,可以函数套函数的。你还少了一个逗号。
    求SUM,应该把为0的去掉,(where  quy_2!=0)更改:
    select CUS_ID, sum(decode(quy_2,0,0,(qty_1-qty_2)/qty_2)) from t_224_stadata where aaa= '689109585' 
    group by CUS_ID   
    注意, 不能写成 除数为0 了。
    或者:
    select CUS_ID, sum((qty_1-qty_2)/qty_2) from t_224_stadata where aaa= '689109585' 
    and quy_2!=0
    group by CUS_ID   
    具体还要看你的 qty_2 是否可以为 null,如果是,还需要麻烦点。