SQL Case平均公式输出问题

时间:2015-02-05 21:08:29

标签: sql sql-server case average

每个人 - 我可以帮助你。

我有一个SQL,我在检查一个列,看看是否有金额。如果没有,我希望它输出NULL。如果是的话,我希望它计算平均值。我正在使用这个case语句并且NULL语句工作正常,但我的平均语句只是吐出1或0.我一直在搜索和测试几个小时没有运气。

CASE 
WHEN SUM(z.[SumTarget$]) = 0 THEN NULL
ELSE (1-(SUM(z.[SumBackorder])+SUM(z.[SumStockedOut]))/SUM(z.[CountofNo]))
END [SumAvPerc]

我已经通过注释第3行来检查字符串中的每个字段,并使用它来确保数字正确进入公式,到目前为止所有内容都已检出。

--ELSE SUM(z.[SumStockedOut])

以下是字段和输出的示例。 **我无法发布图片,因为我需要更多的声望点:( **

1 个答案:

答案 0 :(得分:2)

SQL Server仅对整数进行整数除法,因此您应将值转换为非整数。

我经常使用* 1.0执行此操作,例如:

(CASE WHEN SUM(z.[SumTarget$]) <> 0 
      THEN (1-(SUM(z.[SumBackorder])+SUM(z.[SumStockedOut]))/SUM(1.0 * z.[CountofNo]))
 END) as [SumAvPerc]