没有对Aggregate函数执行除法

时间:2013-11-17 04:03:48

标签: sql sql-server

我在此查询中遇到问题

select SUM(stock),
       SUM(Req_Stock),
       (SUM(Req_Stock)-SUM(stock))/SUM(stock) 
  from #mapo Join #capo 
     on #mapo.Wk_Num=#capo.Wk_Num

2 个答案:

答案 0 :(得分:2)

将其中一个元素乘以1.0,以强制SQL Server不将所有内容视为整数。你的演员没有工作,因为你在分裂后施展它。像SUM(Req_Stock * 1.0)这样的东西应该有效。

答案 1 :(得分:1)

如果列是整数字段,则它不会给出带除法的小数值。

要获取小数值,您必须将分子和Demoninator强制转换为浮点数,然后除以结果:

select SUM(stock), 
       SUM(Req_Stock),
       CAST((SUM(Req_Stock) - SUM(stock)) AS Float) / CAST(SUM(stock) AS Float)
    from #mapo Join #capo
       on #mapo.Wk_Num = #capo.Wk_Num;`