hur.cn - 华软网

 热门搜索

请问pb的sql问题

  作者:未知    来源:网络    更新时间:2017/12/5
请问师兄师姐:
 我写的一个sql:
  count(when .........then isull(id,null) end null end ) sup
  count(when .........then isull(id,null) end null end ) sup2
我要求他们的占比就是sup2 / sup但是sup不能为0 注解:[(count(when .........then isull(id,null) end null end ) / count(when .........then isull(id,null) end null end ) );]
我用having count(when .........then isull(id,null) end null end ) <> 0 但是程序中还是会有问题!(错误提示是除数为0).
请问一下这是什么原因!!!!!!!!怎么解决?谢谢!!!!!
------华软网友回答------
[(count(when .........then isnull(id,null) end null end ) / count(when .........then isnull(id,null) end null end ) );] 你没有判断sup是否为0的情况阿!!你只是判断是否为空的阿!!

------华软网友回复------
请问一下,id怎么判断为0哪?因为不能写成isnull(id,0)!这们就出错!
------华软网友回复------
有没有人知道?谢谢!!!!!!师兄师姐们帮帮忙................多谢谢~!!!!
------华软网友回复------
id=0
直接判不行吗?
------华软网友回复------
那试着把条件改一下

having count(when .........then isnull(id,0) end 0 end ) <> 0
------华软网友回复------
SELECT      
         count(case when st_1>1  then isnull ( pro_id,null) else null end ) chang03,
         count(case when st_1>1  and st_on_hand_qty/st_dms <10 then isnull ( pro_id,null) else null end ) changque03,
          count(case when st_1>1  and st_on_hand_qty/st_dms <10 then isnull ( pro_id,null) else null end ) / count(case when st_1>1  then isnull ( pro_id,null) else null end ) lack
    FROM pos.pro,   
         pos.st 
   WHERE pro_id = st_pro_id  
   having count(case when st_1>1  then isnull ( pro_id,null) else null end ) <> 0
出现错误信息:select error:Divide by zero occurred


  SELECT      
         count(case when st_1>1  then isnull ( pro_id,0) else 0 end ) chang03,
         count(case when st_1>1  and st_on_hand_qty/st_dms <10 then isnull ( pro_id,0) else 0 end ) changque03,
          count(case when st_1>1  and st_on_hand_qty/st_dms <10 then isnull ( pro_id,0) else 0 end ) / count(case when st_1>1  then isnull ( pro_id,0) else null end ) lack
    FROM pos.pro,   
         pos.st 
   WHERE pro_id = st_pro_id  
   having count(case when st_1>1  then isnull ( pro_id,0) else 0 end ) <> 0
出现错误信息:Implicit conversion from datatype 'int' to 'varchar' is not allowed.use th convert function to run this query.
do you want to correct errors?





  

------华软网友回复------
having count(case when st_1>1  then isnull ( pro_id,'0') else '0' end ) <> '0'
试试这个呢!

------华软网友回复------
zxjnew
having count(case when st_1>1  then isnull ( pro_id,'0') else '0' end ) <> '0'
试试这个呢!
出现错误信息:select error:Divide by zero occurred
------华软网友回复------
大哥大姐们有没有人知道哪?谢谢.......请多多帮忙.......谢谢!!!!!!!
------华软网友回复------
有没有人知道哪?帮我顶一下!!!!!!谢谢.........      
华软声明:本内容来自网络,如有侵犯您版权请来信指出,本站立即删除。