SQL事例平均公式输出问题
各位,我需要你们的帮助 我有一个SQL,我在其中检查一列,以查看是否有金额。如果没有,我希望它输出NULL。如果是的话,我想让它计算一个平均值。我使用的是这个case语句,NULL语句工作得很好,但我的平均语句只能输出1或0。我已经搜索和测试了几个小时,但运气不好SQL事例平均公式输出问题,sql,sql-server,case,average,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]
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])
下面是字段和输出的示例。
**我无法发布图片,因为我需要更多的信誉点:(***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]
(SUM(z.[SumTarget$])0时的情况
然后(1-(SUM(z.[SumBackorder])+SUM(z.[SumStockedOut]))/SUM(1.0*z.[CountofNo]))
完)作为[SumAvPerc]
您可以添加图片的链接,有人可以为您添加链接(但是文本会更好)。我猜数据类型是一个(全部?)您的列中有一个整数或一些描述,您使用的RDBMS对整数执行整数除法,例如SQL Server…但我只是猜测。您的数据类型是什么?您使用的RDBMS是什么?您能提供一个简单的示例来说明您的问题吗?是整数数学还是十进制数学的问题。如果UE以整数开头,结果将被舍入。如果值以十进制开头,则它们将不会被舍入。例如:3/2=2,而3/2.0=1.5我认为这与系统如何解释要返回的列的数据类型有关。由于所有涉及的值都是整数,因此它假定整数返回(不是十进制)