CASE max_val-min_val WHEN 0 THEN 100 ELSE 1/(max_val-min_val) ENDmax_val-min_val可不可能CASE里计算时不为0,到THEN时成0了。不能这么写啊,有什么简单点的办法吗?
CASE d=(max_val-min_val) WHEN 0 THEN 100 ELSE 1/d END

解决方案 »

  1.   


    max_val-min_val可不可能CASE里计算时不为0,到THEN时成0了。
    ---------------------------------------------------
    这个可能性,决定于max_val和min_val的数据类型,如果这两个字段都为整型,相减的也是整型。1/整型,结果就可能为0,所以这里应该:
    CASE max_val-min_val WHEN 0 THEN 100 ELSE 1.0/(max_val-min_val) END
      

  2.   

    --不可能的
    --如果 max_val,min_val 是Float 型的話建議
    CASE WHEN abs(max_val-min_val)<0.000001 THEN 100 ELSE 1/(max_val-min_val) END
      

  3.   

    (max_val-min_val)--int?--數據庫是int?
    整數相除=去掉小數部分的整數
      

  4.   

    CASE isnull(max_val-min_val, 0) WHEN 0 THEN 100 ELSE 1/string maxDT END
      

  5.   

    刚刚贴错了
    CASE isnull(max_val-min_val, 0) WHEN 0 THEN 100 ELSE 1/max_val-min_val END
      

  6.   

    1 / ISNULL(NULLIF(max_val-min_val,0),1)