Convert(Decimal(10,2),Sum(coulmn1)/Sum(coulmn2)) 显示 0 数据但 coulmn1 和 coulmn2 都有值

Convert(Decimal(10,2),Sum(coulmn1)/Sum(coulmn2)) showing 0 data but both coulmn1 and coulmn2 has values

我有一个 table,字段 TalkInTimeLoggedOnTime 都有 '9806' 和 '2048810' 记录。我想取 TalkInTime 的百分比,所以我查询了

Select CASE WHEN LoggedOnTime=0 THEN 0 ELSE (SUM(TalkInTime)*100/SUM(LoggedOnTime)) [%TalkInTime] End From Tablename

它显示的结果是 0,但它应该显示的实际值是 0.478。所以我猜这是小数点问题所以我将查询更改为

Select CONVERT(DECIMAL(10,2),SUM(ASGI.TalkInTime)/SUM(ASGI.LoggedOnTime)) from Tablename

但显示的是 0 记录。我在哪里缺少正确的语法?谁能帮帮我?

你需要先转换分子再除法。否则你是在转换整数除法的结果,传递给convert的时候已经是0了:

Select CONVERT(DECIMAL(10,2),SUM(ASGI.TalkInTime))/SUM(ASGI.LoggedOnTime) 
from Tablename

Demo

请注意 / "Returns the data type of the argument with the higher precedence" 根据 MSDN。因此,如果您的输入值为浮点数,则无需更改查询。但是,由于两个值都是整数,所以除法结果也是整数,小数部分被截去。