你直接运行这段SQL试试呢。。

解决方案 »

  1.   

    刚才试了一下,只保留如下代码:
    DECLARE @iscontr2 floatSELECT  @iscontr2=POWER(( a.ori_value - b.min_2014 ) / ( b.max_2014- b.min_2014 ),                               1.4) * 40 + 60 FROM    court_stat a         INNER JOIN range_rule b ON a.index_id = b.index_id 
    依然出现同样的错误代码,“消息 3623,级别 16,状态 1,第 3 行出现无效的浮点操作。”
    是否可以这样推测,由于运算对象小数点位数太多(最多的有6位),导致进行幂函数运算时出现错误?
      

  2.   

    power范围的是float类型,你挑个最大和最小的值直接替换你的列名再执行试试,过大过小的值可能会出问题
      

  3.   

    不是大小的问题。1.4次方,溢出的可能性比较小。我觉得前面(a-b2)/(b1-b2)的部分可能出现负数了。
      

  4.   

    解决了,最后添加ABS绝对值函数成功运行。
    POWER(ABS(( a.ori_value - b.min_2014 ) / ( b.max_2014
                                                                  - b.min_2014 )),
                                  1.4) * 40 + 60 AS iscontr2