困扰很久的查询语句报错,不知道怎么解决(100)

  • 主题发起人 主题发起人 zgp2000
  • 开始时间 开始时间
Z

zgp2000

Unregistered / Unconfirmed
GUEST, unregistred user!
我的查询语句中有如下一句:(sum(金额-成本金额) / sum(金额))*100 as 利润率 有时候查询就报 floating point division by zero 我想可能是sum(金额)正好为0造成的。有没有办法解决啊,让其出现此情况时默认为0也可以。
 
(case SUM(金额-成本金额) when 0 then 0 else sum(金额-成本金额) / sum(金额))*100 end) as 利润率
 
case sum(金额) when 0 then 0 else SUM(金额-成本金额) / sum(金额))*100 end as 利润率
 
如果是ORACLE的话,用DECODE函数:decode(条件,值1,翻译值1,值2,翻译值2,...值n,翻译值n,缺省值)该函数的含义如下:if ( 条件=值1 )    return(翻译值1)else if( 条件=值2)    return(翻译值2)    ......else if( 条件=值n )    return(翻译值n)else   return(缺省值)end if;select decode(sum(金额))*100,0,0,(sum(金额-成本金额) / sum(金额))*100) as 利润率 from table1
 
sql 2000数据库可以了,但是数据库是ACCESS的怎么办?
 
access很多标准SQL都不支持,只能强写VBA了.
 
不是有个什么iif语句吗?
 
用异常处理不行吗?try。。。。
 
IIf(sum(金额-成本金额)=0,0,sum(金额-成本金额)/ sum(金额))*100 )这个在表达式中设计还可以,要放到Sql语句中,就不知道了.
 
sql 2000的没问题了,就是ACCESS的还没搞定啊
 
先对sum(金额)作判断,然后用SQL语句
 
多人接受答案了。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
1K
DelphiTeacher的专栏
D
后退
顶部