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
CASE d=(max_val-min_val) WHEN 0 THEN 100 ELSE 1/d END
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
--如果 max_val,min_val 是Float 型的話建議
CASE WHEN abs(max_val-min_val)<0.000001 THEN 100 ELSE 1/(max_val-min_val) END
整數相除=去掉小數部分的整數
CASE isnull(max_val-min_val, 0) WHEN 0 THEN 100 ELSE 1/max_val-min_val END