SQL 部门给出错误答案

3 sql sql-server sum divide

可能的重复:
这个 SQL Server 查询除法计算有什么问题?

我在 SQL 中除以两个值

SELECT SUM(totalCalls), 
    SUM(EnteredBTN), 
    SUM(EnteredBTN) * 100 / SUM(totalCalls),
    SUM(EnteredACC), 
    SUM(EnteredACC) / SUM(totalCalls), 
    SUM(SentToTrans),
    SUM(SentToTrans) * 100 / SUM(totalCalls),
    SUM(Complete_Information), 
    SUM(Complete_Information) * 100 / SUM(SentToTrans) 
Run Code Online (Sandbox Code Playgroud)

现在,当我执行SUM(EnteredACC)/SUM(totalCalls)ie 7/48时,它应该给我0.14,但它却给我0

当我SUM(EnteredACC)*100/SUM(totalCalls)这样做时,应该给出14.58(四舍五入后为15 ),但结果却给出14 。有人可以帮忙吗?

Lam*_*mak 7

答案很简单,列的数据类型很可能EnteredACCtotalCallsINTSMALLINTBIGINT等),因此您的结果是一个INT。因此,14.58 变为 14,0.14 变为 0。您需要对数据类型进行强制转换(隐式或显式):

SUM(CAST(EnteredACC AS DECIMAL(16,4))/SUM(totalCalls)
Run Code Online (Sandbox Code Playgroud)