You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SSMS中SQL查询计算百分比结果始终返回0的问题求助

问题原因及解决办法

原因

这是整数除法导致的:SQL中两个整数类型的数值相除时,结果会自动取整数部分、舍去小数部分。你的例子里v2t2=175和v1T=486都是整数,175÷486≈0.36,取整后结果就是0。

你之前转换类型没成功,大概率是转换时机错了——如果先做整数除法再转换结果(比如CAST(v2.TotalUnits / v1.Total AS FLOAT)),那得到的0再转类型还是0,等于没起作用。

解决办法

只需确保除法运算中至少有一个操作数是浮点/小数类型,有两种常用方式:

方式一:转换其中一个操作数的类型

select 
  (v1.Total - v2.TotalUnits) as [Number Of Sales To Target], 
  v2.TotalUnits as v2t2,
  v1.Total as v1T,
  -- 将分子转为FLOAT类型,触发浮点除法
  (CAST(v2.TotalUnits AS FLOAT) / v1.Total) as [Percentage],
  -- 若要保留指定精度,可转为DECIMAL类型
  (CAST(v2.TotalUnits AS DECIMAL(10,2)) / v1.Total) as [Percentage_WithPrecision]
from table1 v1 
Left Join table2 v2 ON v1.ID = v2.ID

方式二:用小数常量触发浮点运算

通过乘以1.0(小数常量),让整数自动转为浮点型再计算:

select 
  (v1.Total - v2.TotalUnits) as [Number Of Sales To Target], 
  v2.TotalUnits as v2t2,
  v1.Total as v1T,
  (v2.TotalUnits * 1.0 / v1.Total) as [Percentage]
from table1 v1 
Left Join table2 v2 ON v1.ID = v2.ID

内容的提问来源于stack exchange,提问作者M.Ustun

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 08:20:26